#include <stdio.h>
int main(void)
{
char ch;
int end=0;
printf("\nPick a letter a through f. (f ends the program)");
do
{
scanf("%c", &ch);
switch (ch) {
case 'a':
printf("a. another: ");
break;
case 'b':
printf("b. another: ");
break;
case 'c':
printf("c: another ");
break;
case 'd':
printf("d. another: ");
break;
case 'e':
printf("e. another: ");
break;
case 'f':
printf("f. Goodbye. ");
end=1;
break;
default:
printf("That wasn't a through f. ");
break;
}
} while (end == 0);
return 0;
}
所以,如果你輸入一個,然後它會說:爲什麼我的switch語句打印一個case和default?
a. another: That wasn't a through f.
如果輸入說g然後它會說:
That wasn't a through f. That wasn't a through f.
如果您輸入f然後它會做如預期
f. Goodbye.
程序終止。
有關如何解決此問題的任何提示?我嘗試過查找一段時間,我得到的答案不是C,或者他們說你忘記了休息時間;聲明。我也是C新手,所以也許這很明顯,我沒有注意到,我也認爲這可能是由於do while while循環造成的。感謝您的時間
問題出在'scanf(「%c」,&ch);'通過在其中添加空格修復:'scanf(「%c」,&ch);' – artm
在格式說明符中沒有空格的scanf不會將任何不同於任何其他字符的空格對待。它爲'a'執行一次循環,然後再次執行換行 – Tibrogargan
感謝您對scanf的解釋。我不知道它是這樣工作的。案例'\ n':break;和scanf(「%c」,&ch);均可以同樣工作 – jonnyboy1555