scanf 函式接收鍵盤輸入的字元,經過格式轉換說明符轉換成對應的資料型別的資料後,儲存在相應的變數中

2022-02-04 12:36:11 字數 3618 閱讀 4375

1樓:匿名使用者

錯是變數所存在的位址中

c語言中用scanf函式輸入字元時,為什麼要在輸入控制符%c前面加空格?用scanf還有哪些要注意?

2樓:愛佳佳的恐龍

如果scanf中%d是連著寫的如「%d%d%d」,在輸入資料時,資料之間不可以用逗號分隔,只能用空白字元(空格或tab鍵或者回車鍵)分隔。

「2 (空格)3(tab) 4」 或 「2(tab)3(回車)4」等。若是「%d,%d,%d」,則在輸入資料時需要加「,」,如「2,3,4」。

比如scanf(" %c" ,&c);

你輸入了' a'(a前面有個空格),a就能被c接受。但控制符前如果沒空格,那c就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第乙個非空格輸入。

3樓:黑白say晚安

加空格遮蔽了空白字元。

%c前沒空格,scanf()將讀取標準輸入流中的第乙個字元,%c前有空格,scanf()則讀取標準輸入流中第乙個非空白字元。

使用scanf函式時應該注意的問題:

scan:掃瞄       f :format,格式1、整數和小數分別使用使用控制符%d %lf 表示(float除外,用%f)。

2、引數前面使用&符號,&號前要空格。

3、scanf輸入語句中替換符後不能加空格,也不能加\n。

4、scanf()中的變數必須使用位址。

5、scanf()的格式控制串可以使用空白字元或其它非空白字元,使用空白字元會使scanf()函式在讀操作中略去輸入中的乙個或多個空白字元。使用非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。

6、在用"%c"輸入時,空格和「轉義字元」均作為有效字元。

4樓:西西哩的小馬甲

空格確實不是必須的,但有了空格就可以忽略你輸入的空格。

例如:scanf(" %c" ,&c),你輸入了' a'(a前面有個空格),a就能被c接受。

但控制符前如果沒空格,那c就接受了空格,這個可以防止誤操作,忽略空格輸入,接受第乙個非空格輸入。

注意事項:

對於scanf()而言,%c是個較為特殊的說明符。 %c前沒空格,scanf()將讀取標準輸入流中的第乙個字元,%c前有空格,scanf()則讀取標準輸入流中第乙個非空白字元,遮蔽了空白字元。

5樓:圈圈叉叉叉叉圈

這絕對不是為了美觀,1樓不要誤人子弟。

空格確實不是必須的,但有了空格就可以忽略你輸入的空格,懂我的意思嗎?

比如scanf(" %c" ,&c);

你輸入了' a'(a前面有個空格),a就能被c接受。但控制符前如果沒空格,那c就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第乙個非空格輸入!

6樓:夏天很冷

空格不是必須的,scanf("%c %c",a,b)只是提示在輸入時兩個字元必須有空格間開。如果是scanf("%c%c",a,b)那沒兩個輸入字元不要有空格,不過程式設計時最好加上空格,這算乙個書寫規範吧,要不然如果你scanf("%s%s",a,b)系統可能區分不了你的字串何時結束。

7樓:湮魂

不是必須加空格,這並不能防止誤輸入的,這種**寫出來,用的人肯定只能是熟知**如何編寫的人,有無空格分隔使用者會根據其格式使用,個人感覺就是為了能讓別人看清楚

8樓:我要度百

空格不是必須的吧,我們是感覺看起來美觀一些而加入的呀

c語言,double型別的變數使用scanf()函式賦值後再使用printf()輸出,為什麼和輸入的值不同?

9樓:匿名使用者

c語言中double輸入輸出,都用 %lf 進行格式化,是否寫成了 %f, 這個是float型別。

#include

int main()

2. 字元定義如下

字元 對應資料型別 含義

d / i int 接受整數值並將它表示為有符號的十進位制整數,i是老式寫法

o unsigned int 無符號8進製整數(不輸出字首0)

u unsigned int 無符號10進製整數

x / x unsigned int 無符號16進製制整數,x對應的是abcdef,x對應的是abcdef(不輸出字首0x)

f(lf) float(double) 單精度浮點數用f,雙精度浮點數用lf(尤其scanf不能混用)

e / e double 科學計數法表示的數,此處"e"的大小寫代表在輸出時用的「e」的大小寫

g / g double 使用以上兩種中最短的形式,大小寫的使用同%e和%e

c char 字元型。可以把輸入的數字按照ascii碼相應轉換為對應的字元

s / s char * / wchar_t * 字串。輸出字串中的字元直至字串中的空字元(字串以'\0『結尾,這個'\0'即空字元)

p void * 以16進製制形式輸出指標

n int * 到此字元之前為止,一共輸出的字元個數,不輸出文字

% 無輸入 不進行轉換,輸出字元『%』(百分號)本身

m 無 列印errno值對應的出錯內容,(例: printf("%m\n"); )

10樓:

精度不夠  截斷了吧

改成這樣

#include

void main( )

%f是輸入float型時用的

11樓:京縈

float是4個位元組,而double是8個位元組,如果你要寫入double你就必須寫入8個位元組,4個位元組的寫入使得另外4個位元組就是隨機數字,可以用long float來替代double因為他也是8個位元組。

12樓:逐夢兮樂

#include

void main()

雙精度double要用%lf,不信,你試一試。祝你愉快!

13樓:廣月凋

因為double不能用%f來控制輸入和輸出,應該用%ld來控制輸入和輸出。

#include

void main( )

14樓:

scanf(「%lf」,&x)或scanf(「%le」,&x)才可以用來輸入double型別的資料

c語言裡面如何兩次用scanf函式獲取鍵盤輸入的字元

15樓:峰楓

按照固定格式就可以,比如scanf(「%d」,&a)獲取整數,儲存在變數a裡,多次獲取也一樣的。

16樓:何度千尋

scanf與printf函式一樣,都被定義在標頭檔案stdio.h裡,因此在使用scanf函式時要加上#include 。它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。

函式 scanf() 是從標準輸入流stdio (標準輸入裝置,一般是鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應位址的變數中。

其呼叫形式為: scanf("《格式說明字串》",《變數位址》);變數位址要求有效,並且與格式說明的次序一致。

c語言 所有的型別輸出符

vb中由鍵盤輸入整數x求下面分段函式的值

如下bai include include int main else if x 10 else printf f result return 0 擴充套件zhi資料 c語言dao計算分段函式專值的簡單代屬碼 include include int main 如下copy include inclu...

C語言程式設計編寫程式,從鍵盤輸入字串放在字元陣列a中,用選擇法將a中的有效字元按降序排列

include int main tmp a i a i a max a max tmp printf s n a return 0 c語言程式設計 編寫程式,從鍵盤輸入乙個字串放在字元陣列a中,用選擇法將a中的有效字元按降序排列 include include include void inord...

c語言程式問題要求從鍵盤輸入變數的值

main a t 改為 c t 這樣就ok 你最後那個t應該賦值給c,這樣就對了 c語言輸入3個整數a,b,c程式設計交換它們的值,即把a的值給b,把b中的值給c,把c中的值給a。驗證正確.include stdio.h main 擴充套件資料 c語言輸入整數,判斷該數的回 奇偶答性 include...