學習C語言中遇到的do while迴圈問題

2021-10-07 12:30:12 字數 894 閱讀 1871

學習c語言中遇到的問題

下面的程式中的do_while迴圈在執行時只能輸入一次字元,第二次迴圈時會跳過,請問這是什麼原因??

#include #include #include #include #include int roll_dice(void);

bool play_game(void);

int main(void)

else

printf("play again?(y/n)");

scanf("%c",&ch);//第二次直接會跳過這句導致迴圈結束。

}while(toupper(ch) == 'y');

printf("\nwins:%d. losees:%d.",win,lose);

return 0; }

int roll_dice(void)

bool play_game(void)

}

已解決,此句

printf

("play again?(y/n)");

scanf

("%c"

,&ch)

;

應為

printf

("play again?(y/n)");

scanf

(" %c"

,&ch)

;

不過為什麼??

已解決在第一次輸入時,除了字元"y"以外,還摁下了回車鍵——實際上輸入了兩個字元——但是第一次只讀取了乙個字元,剩下的"回車"留在了緩衝區,所以在第二次迴圈時直接讀取"回車",導致跳過,使用空格可以過濾掉。

還可以利用:fflush(stdin);來清除緩衝區。

C 記錄C語言中由於粗心遇到的奇葩錯誤

1.正確 for word strtok buf,whitespace word null word strtok null,whitespace if strcmp word,the 0 錯誤 for word strtok buf,whitespace word null word strtok...

學習C語言中的位操作

最近在寫程式時,我需要判斷乙個dword 型別變數的某乙個二進位制位是否為1或0,我們都很清楚,dword型別的變數在記憶體中佔32位,現在要我們判斷其中的某一位是0還是1,該如何是好呢?這時我想到了c語言中的位操作,借助位操作,可以實現我們想要的功能。關於位操作,我從網上收集整理的資料如下 一 位...

學習C語言中的位操作

最近在寫程式時,我需要判斷乙個dword 型別變數的某乙個二進位制位是否為1或0,我們都很清楚,dword型別的變數在記憶體中佔32位,現在要我們判斷其中的某一位是0還是1,該如何是好呢?這時我想到了c語言中的位操作,借助位操作,可以實現我們想要的功能。關於位操作,我從網上收集整理的資料如下 一 位...