C語言中,關於while迴圈的問題

時間 2021-09-05 17:50:42

1樓:匿名使用者

#include

int main(int argc, char **argv)

} 我在解釋一下,昨天沒說清楚。就算你只輸入了乙個a,這個時候scanf掃瞄緩衝區,發現不是整形,所以直接退出,指標仍舊指在a的位置,下次scanf呼叫的時候,指標仍舊指在a這裡,所以scanf不等待你輸入,但是a不是整數,又直接退出了,緩衝區指標仍舊指在a這裡。這樣會一直迴圈到死。

scanf("%c", &code);這一句就是在你這次輸入不是整形的時候把緩衝區裡的資料作為字元讀取,這樣指標就向前移了,這次應該比較清楚了

2樓:

(code < 1 || code > 5))

加個fflush(stdin);就好了,需要清除快取。

3樓:匿名使用者

輸入"aa"後,滿足迴圈條件status=scanf("%d",&code)!=1,所以程式會不停地迴圈

4樓:匿名使用者

我個人理解它會先讀取到乙個字元a,而你接收時要接收整形的,那麼他會把字元a強制轉化十定製整形數92,所以while的條件成立就成了死迴圈,而指標始終指的是第乙個字元a,不會指向第二個a,更不會識別到回車。

c語言中while和dowhile迴圈的主要區別是

問明 1 迴圈結構的表示式不同 while迴圈結構的表示式為 while 表示式 迴圈體 do while迴圈結構表示式為 do 迴圈體 while 條件表達 2 執行末尾迴圈體的順序不同 while迴圈的末尾迴圈體也是在中間迴圈體裡,並在中間迴圈體中執行,迴圈體是否繼續執行的條件也在迴圈體中。do...

C語言怎麼退出while迴圈,c語言中while的用法

不不見不念 if條件語句寫錯了 if a 判斷字串相等不能用等號 if strcmp a,0 要這麼寫 while 是乙個迴圈體,退出迴圈體的方法有 1 迴圈體條件 不成立,如 while a 0 當 a 0 的時候,條件 a 0不成立,while 迴圈結束,退出 while 迴圈。2 在迴圈體內使...

c 語言while迴圈,c語言while的用法

p1 p2 這個是賦值語句,而非比較運算。字元陣列雖然有大小限制,但是指標就不同,即便超過了大小,指標指向陣列越界後的下乙個記憶體單元,並不會發生錯誤 另外,printf s a 函式列印字串,它是在遇到字串結束符的時候才終止輸出,此時a陣列的值已經被賦值為p2所指向的記憶體空間的值。這個程式是錯的...