/* Prints a table of squares using a for statement */
#include <stdio.h>
int main(void) {
int i, n;
printf("This program prints a table of squares.\n");
printf("Enter number of entries in table: ");
scanf("%d", &n);
getchar(); /* ungets '\n' from buffer */
for (i = 1; i <= n; i++) {
printf("%10d%10d\n", i, i * i);
if (i % 24 == 0) {
printf("Press Enter to continue...");
while (getchar() != '\n')
;
}
}
return 0;
}
這個程式的要求是每24次平方后暫停,錄入回車鍵后繼續。我看不懂這個慷訓圈。請問運行到19行時,當輸入的不是回車,不就執行空陳述句嗎,執行完空陳述句不是還得繼續for回圈嗎,照這樣說就與要求不符了呀?[/code]
uj5u.com熱心網友回復:
你是不是對while有什么誤解?還以為是if呢?uj5u.com熱心網友回復:
這個程式的要求是每24次平方后暫停,錄入回車鍵后繼續。我看不懂這個慷訓圈。請問運行到19行時,當輸入的不是回車,不就執行空陳述句嗎,執行完空陳述句不是還得繼續for回圈嗎,照這樣說就與要求不符了呀?
你沒理解while回圈,如果輸入的不是回車,那么getchar() != '\n'就會一直成立,就會一直重復while回圈(回圈空陳述句什么都不處理,但回圈沒有結束,會繼續回圈),直到你輸入回車,getchar() != '\n'不成立才會退出while回圈,接著才會重新繼續for回圈
uj5u.com熱心網友回復:
其實你把while回圈改一下就理解了while (getchar() != '\n'); 改成以下
while(1) { //無條件回圈
if (getchar()=='\n') break; //每次回圈接收一個輸入,輸入如果是回車就退出回圈
}
這兩個while是等效的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/244849.html
標籤:C語言
