char ch;
int nr=0;
printf("\n: ");
ch = getchar();
while(ch != 'q' && ch != 'Q'){
ch = tolower(ch);
if(ch == 'a' || ch == 'e' || ch == 'o' || ch == 'i' || ch == 'u')
nr ;
printf("something");
ch = getchar();
}
printf("vocale: %d", nr);
它應該計算元音的數量,直到用戶按下 q 或 Q。這是一個如此愚蠢的程式,但我無法通過它。
uj5u.com熱心網友回復:
而不是使用getchar
ch = getchar();
也可以讀取空格字符,使用scanflike
scanf( " %c", &ch );
注意格式字串中的前導空格。它允許跳過空白字符。
例如
while ( scanf( " %c", &ch ) == 1 && ch != 'q' && ch != 'Q'){
寫起來也會更安全
ch = tolower( ( unsigned char )ch );
uj5u.com熱心網友回復:
問題是,只有當用戶按下回車時,輸入才會重繪 到您的程式中。它似乎不起作用的另一個原因是,因為您在輸出 ( printf("vocale: %d", nr); ) 的末尾沒有換行符,這導致程式結束時輸出不會重繪 到終端。解決這個問題,你的程式就可以作業了,但可能不是你期望的那樣,因為你仍然需要按 Enter 鍵。它仍然只會計算到找到的第一個“q”。
int main() {
char ch;
int nr = 0;
printf(": ");
while(tolower(ch = getchar()) != 'q'){
ch = tolower(ch);
if(ch == 'a' || ch == 'e' || ch == 'o' || ch == 'i' || ch == 'u')
nr ;
}
printf("vocale: %d\n", nr);
}
該程式:
: aeu q oi (here I pressed enter)
vocale: 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/525462.html
下一篇:fork子行程以信號0終止
