c語言程式設計問題為什麼在scanfcch 中c加個空格就正確了 加空格和沒加空格有什麼不同?求解,詳細點

2022-05-09 15:19:57 字數 4474 閱讀 3682

1樓:匿名使用者

我的理解是你先輸入1 2按回車,然後螢幕顯示zhifu ,然後你在輸入+。

如果你是這樣輸入的話%c前沒有空格的話+不會讀入程式賦給ch,因為輸入1 2後的回車符號賦給了ch,而接受回車的意思就是輸入終止,所以+並沒有賦給ch

2樓:倒霉熊

這是因為你輸入的時候,是這樣輸入的

1 2 +這樣吧,符號和前面的數字之間有乙個空格??

這個空格就是scanf中的要加的那個空格,如果你輸入1 2+沒有空格,則不需要,你試試!!

3樓:匿名使用者

原因在於函式scanf把使用者輸入的回車和空格也當做乙個有效的字元讀入處理了(在你輸入兩個數按的那個回車被後面的scanf(" %c",&ch)讀入),所以出錯!

在%c前加空格就是為了儲存回車或空格等特殊字元。

我想問問在c語言中scanf(" %c",&ch) 的%c前面加個空格到底有什麼作用啊

4樓:軍軍

就是你在輸入乙個字元前要加乙個空格,這樣一一對應便於判斷,如果scanf中加了空格而輸入時沒加是無法正確讀取的。

5樓:匿名使用者

沒有作用,就算你留n個空格編譯時也不會識別,想在輸出結果中留空格必須要有格式控制符

6樓:我已經匿名了

回答者: wuyuanbo106 所言極是。

c語言中用scanf("%c",&ch);程式會出錯,如果scanf(" %c",&ch);在%c前面加個空格就是正常執行

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

7樓:愛佳佳的恐龍

如果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就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第乙個非空格輸入。

8樓:黑白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"輸入時,空格和「轉義字元」均作為有效字元。

9樓:西西哩的小馬甲

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

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

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

注意事項:

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

10樓:圈圈叉叉叉叉圈

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

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

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

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

11樓:夏天很冷

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

12樓:湮魂

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

13樓:我要度百

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

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

14樓:鮮雁員環

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

例如:scanf("

%c",&c),你輸入了'

a'(a前面有個空格),a就能被c接受。

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

注意事項:

對於scanf()而言,%c是個較為特殊的說明符。

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

擴充套件資料:

scanf

c語言中常用的標準輸入輸出函式,它的常規用法是scanf(「輸入格式」,輸入位址),scanf從輸入緩衝區取入資料按照指定的「輸入格式」儲存到指定的「輸入位址」。

但是有一類問題通常令人頭疼,那就是字串的讀入,此處僅僅討論使用scanf讀取字串的一些問題。理論上你只需要定義乙個字元指標,然後scanf每次讀入字元儲存到該指標所指的儲存空間,之後指標值自動加1。

參考資料:搜狗百科c語言

15樓:越廣英鄒月

空格不是必須的,scanf("%c

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

16樓:毛來福養雲

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

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

比如scanf("

%c",&c);

你輸入了'

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

c語言中,在int形和char形混輸時如scanf("%d %c %c");,為什麼%c前要加空格?

17樓:伍永芬懷緞

不加空格的話就要再輸完int型的值後回車,再輸入char型的值

加空格就是把回車換成空格而已

18樓:逢元修喬亥

可能是因為加了空格,輸出比較好看(字母和數字被隔開),,編**時並不一定要加空格的

19樓:霜讓幸綾

c語言就是這麼要求的,scanf函式使用空白字元分割輸入的資料,空白字元包括空格、換行、tap。

20樓:玉素枝俞綢

暈還有人回答是為了好看

是這樣的```在不加空格的情況下"%d%c%c",&a,&b,&c當你輸入「3空e空f」

你第乙個是整形

自然會把你輸入的數字給第乙個a,你輸入第二個是空格,會把這個空格當成字元賦值給b

你輸入第三個是e,會把e賦值給c

這樣程式就認為已經完成了賦值,而不會理會後面的"空f"

結果a=3,b='

',c='e'

可以這樣測試

#include

long

main()

c語言問題,這個scanf函式裡面加空格和不加空格的區別是什麼,我發現加了空格程式才能執行,不加就

21樓:匿名使用者

scanf函式是將輸入的資料打到輸入緩衝區之後需要按照scanf裡的格式進行比對才能取出來~

比如scanf("%d %d",&,i,&j)這樣的話,你在輸入的時候需要加空格:2 3,如果不加空格,這個輸入就是不正確的~不會顯示正確的資料出來~

c語言程式設計問題,c語言程式設計問題?

include int main int i,n double sum 0 scanf d n for i 1 i n i sum i i 1.0 i 1 printf f n sum return 0 include void main c語言程式設計問題 解題思bai路 完全跟百錢買百雞的問題是...

C語言程式設計問題,c語言程式設計問題

先判斷括號中的真假,a是先將a自減1,得到值0,然後b 的意思是取得b的值和 a判斷後才將b 1,括號中的表示式為真,所以x的值是 a,因為已經將a自減1了,此時再減1得到 1,賦給x。將a的值賦給y,然後a 1,所以y的值也是 1,在 a b 因為已經將b 1了,所以z的值為1.i 是執行前 1 ...

c語言程式設計,求兔子問題,c語言程式設計問題

因為只有6年,定義乙個陣列儲存第n年各歲兔子的數量 include int sum int n return a 0 a 1 a 2 a 3 a 4 a 5 void main 壽命是6年,也就是還是要掛掉的。遞迴光加了,沒有考慮死掉的哦 include include void main if r...