for迴圈中的scanf問題,一個關於在for迴圈裡用scanf 輸入出錯的問題?

2021-09-11 19:13:22 字數 3781 閱讀 2332

1樓:

空格將會在進入for迴圈,之後被讀取給score,但是空格是字元,score的型別是int,所以無法被成功讀取,這是一個死迴圈!

你的問題很有考究性,很不錯!!!你很強的

2樓:匿名使用者

例如你輸入的學生人數是:3(空格) 然後回車3將被讀取賦值給n

而空格將會在進入for迴圈後被讀取給score但是空格是字元,score的型別是int,所以無法被成功讀取,空格將依然在輸入緩衝中,結束被刺迴圈後進入下次迴圈將再次讀取空格如此往復就形成了死迴圈

3樓:匿名使用者

只有回車才表示輸入完了啊!!!!、

除了一次在一行裡讀入兩個字串時是用空格做分隔開,其他一般都是用回車

4樓:

是這樣的,按回車鍵是告訴scanf輸入結束了,如果你每輸入一個學生的成績按一下回車,程式就會判斷一下並計算一下總成績。如果你用空格分開,程式就會等你按下回車告訴系統你輸入完了,程式才會判斷。

編的不錯,你是初學的嗎?繼續努力。多體會,c語言很有意思,如果想系統學習c語言推薦你看:

[c.primer.plus&c..

primer.plus第五版中文版]

5樓:匿名使用者

i<3;i++);

這句不應該由分號結尾,這樣的話後面的語句不會是for的一部分。

第二:case '0':printf("another\n");後面應有break。

原因是,如果k為0,這句執行之後,case '1'中的語句同樣會執行。

第三:for(i=1;i<3;i++)只會迴圈兩次,因此不會出現樓主所說的三個結果

另外,虛機團上產品**,超級便宜

6樓:匿名使用者

我看明白了。

回車鍵相當於兩個位元組:0x0d、0x0a。(並且執行輸入,將字元緩衝區資料輸入進變數中)

空格只相當於一個位元組:0x20,

對於scanf("%d",&n) ,往往是輸入一個數+回車。對於不是數字的輸入,一律過濾直到碰到數字。

對於第一個問題我沒有死迴圈啊,你能把你的資料給我嗎我試試死迴圈。

最後建議你去看看除錯+msdn,編譯錯誤+連結錯誤+執行錯誤,都搞定。

一個關於在for迴圈裡用scanf()輸入出錯的問題? 20

7樓:匿名使用者

呵,你在輸入時是不是輸入一個字元然後點一次回車?別忘了回車也是一個字元啊!你的程式沒有問題,可以在輸入時連續點4個字元然後點一次回車就可以了!

8樓:

你肯定是輸入一個字元然後回車了,這樣回車也是作為一個字元存進陣列的

9樓:匿名使用者

回車是為asic碼為13的字元吧。

10樓:匿名使用者

補充: 這裡的回車還在流裡是因為用的scanf("%c",&(a[i]));的原因(即讀入的是字元的原因),在讀入其它資料(如整數等)的時候回車會自動刪除!

#include

main()

for (i = 0; i < 4; i++)printf("%c\t",a[i]);

printf("\n");}

c語言關於for迴圈中使用scanf連續輸入的問題or not,求大神看看**。

11樓:聽不清啊

#include

int main()

for(i=0;i

return 0;}

c語言for迴圈裡的scanf怎麼用?

12樓:樂跑小子

int i;

int a[10] = ;

for(i = 0; i < 10, i++)for(i = 0; i < 10; i++)這是輸入

數字的,要輸入字母的話,可專以把a[10]定義為char型屬

13樓:匿名使用者

const int max = 30;//這樣不好吧#defin max 30

char name[arraysize][max];

printf("enter number of marks: ");

scanf("%d", &arraysize);

for (i = 0; i < arraysize; i ++)#include

#define max 30

int main(void)

{int i, tmp;

char mark[max][max];

char name[max][max];

printf("enter number of marks: ");

scanf("%d", &tmp);

for (i=0; i

14樓:手機使用者

因為你非copy常有可能每輸bai入一個字元就按了一次du回車,而回車其實也是一個字zhi符。

在 scanf("%c",char[i]);語句後加上一dao句getchar();就可以啦!

如果前面有輸入資料的情況。把getchar();放在 scanf("%c",char[i]);之前。

15樓:東郭遠酈秋

肯定是因為game()函式裡有scanf語句,並且scanf之後沒有處理scanf留下的換行符。

scanf從螢幕是讀取資料時,往往

專不會自動讀掉

屬行尾的換行符(你輸入資料後,肯定會按一個回車的對吧),所以在game函式裡的最後一個scanf結束後,輸入緩衝區裡還一個換行符在裡面,這個時候main函式裡的scanf函式讀到的字元就是那個換行符

解決方法:

在game函式的最後一個scanf函式後面,加上一個gets語句,用來讀掉最後一個換行符即可,當然如果你的輸出裡敲了多個回車,就要執行多句,不懂可以貼上你的game()函式和你上面的輸入,我再告訴你

c語言中for迴圈和scanf問題

16樓:風若遠去何人留

scanf一行 多加一個&

scanf("%d",&a[i][j]);

關於scanf在for中迴圈讀取的問題。在c中第一個scanf在for迴圈裡面無效,如果是一個scanf會結束迴圈?

17樓:匿名使用者

建議這制

樣設計:

cout<<"現在正在下雨嗎?(輸入y或n)\n";

while ( 1 )

cout<<"現在正在下雨\n";

c語言for迴圈裡輸入陣列元素時關於scanf的問題

18樓:匿名使用者

for(i=0;i<5;++i)

}如果是這種形式的就輸一個數按一次版

回車。權

19樓:匿名使用者

是給二位數字賦值嗎?

在內層迴圈scanf前面加個printf啊printf("data[%d][%d]",i,j);

輸入的值一定要和定義的陣列匹配

20樓:壤駟禮萬橋

gets()會將回車一起讀進字元陣列裡,而scanf("%s")不會讀回車

scanf("%s")會將空格和回車留在輸入流裡,下一次讀取,讀輸入流裡的下一個字元。

你開一下debug除錯看看,就知道了。

scanf函式c的問題,c語言scanf函式格式問題

首先scanf應該這樣用 scanf 格式化字串 變數地址 你的用法是錯誤的 c 只從輸入緩衝裡讀一個字元,但是你在輸入的時候不只一個字元,剩下的字元 包括回車 就留給第二個 c 了 解決方法 printf y or n?scanf c n a fflush stdin printf y or n?...

從水迴圈中,地球上水迴圈的途徑是怎麼樣的

第一種 區域小迴圈 成因是地表水受到輻射蒸發,空氣上升成雲致雨,返回地面。這屬於區域小迴圈。第二種 海陸大迴圈 成因是地表河流注入海洋,海洋水分蒸發,向陸地輸送大量水汽,水汽在陸地成雲致雨返回地面,經河流又返回海洋。這叫做海陸大迴圈。水迴圈是多環節的自然過程,全球性的水迴圈涉及蒸發 大氣水分輸送 地...

關於c語言scanf工作原理的問題

第一個問題,因為你的scanf函式使用了域寬來指定讀入的格式。所謂域寬,就是說讀入的時候把某個寬度內的值付給某變數。那麼。你第一個引數讀入規則是 3c,意思是設定域寬為3,讀入一個char型資料。你輸入的是abcde。那麼前面的abc將作為第一個引數給一個char型資料。而char型資料只需要一個字...