【发布时间】:2016-11-13 05:19:25
【问题描述】:
#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;
}
所以如果你输入 a 那么它会说:
a. another: That wasn't a through f.
如果你输入 say g 那么它会说:
That wasn't a through f. That wasn't a through f.
如果你输入 f 那么它会按预期进行
f. Goodbye.
程序终止。
关于如何解决此问题的任何提示?我已经尝试查找了一段时间,但我得到的答案不是 C 语言,或者他们说你忘记了休息;陈述。我也是 C 的新手,所以也许这很明显我没有注意到,我还认为这可能是由于 do while 循环的原因?感谢您的宝贵时间
【问题讨论】:
-
问题在于
scanf("%c", &ch);通过在其中添加空格来修复:scanf(" %c", &ch); -
scanf 在格式说明符中没有空格,不会将空格与任何其他字符区别对待。它为
a执行循环一次,然后为换行再次执行循环 -
感谢您对scanf的解释。我不知道它是这样工作的。案例'\ n':中断;和 scanf("%c", &ch);两者工作相同
标签: c switch-statement do-while