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

時間 2021-09-11 22:33:38

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除錯看看,就知道了。

多重迴圈中的continue的用法

public class cont system.out.println test 當是continue back1的時候,當i 0時候第二層for迴圈到j 9的時候就結束此次迴圈,執行continue back1,到第一層迴圈。此時因為有i 所以i 1的時候,第二層for迴圈到j 9的時候就結束當...

請問for迴圈中的switch語句中case後用break還是continue??區別是什麼

鐮刀鐵錘遊騎兵 break是結束並跳出迴圈語句,continue是結束本次迴圈然後進入下次迴圈 迴圈的定義是程式段執行完了以後,再次判斷條件,若條件為真,則繼續執行該程式段。而在switch結構當中,只是該程式段執行完了之後,就繼續執行下面的語句。因此很明顯switch結構不是迴圈。迴圈有重複 反覆...

for迴圈中的i 何 i沒區別嗎

for迴圈中的i 和 i是有區別的,區別如下 i 是先引用i的值再自加,而 i是先讓i自加再引用i的值。本迴圈中i 的輸出值為0 1 2 3 4 5 6 7 8 9,而 i的輸出值為1 2 3 4 5 6 7 8 9,但兩種演算法執行完畢之後,i的值都為10.一般實際應用中,先加在引用顯得更高效。f...