【发布时间】:2015-04-29 21:08:33
【问题描述】:
我被要求编写一个程序来执行某些任务,如果用户输入'y',它会重复自己,或者如果用户在任务结束时输入'n',则结束。为了简单起见,让我们说它打印“祝你有美好的一天”的任务。 这是我的代码:
int main(void) {
char cont;
bool repeat = true;
while (repeat == true){
printf("Have a nice day!\n");
printf("continue to print?\n");
scanf("%c",&cont);
if (cont == 'n') {repeat = false;}}
}
但是,输出似乎不正确。输入'y'两次然后'n'一次后的实际输出是
Have a nice day!
continue to print?
y
Have a nice day!
continue to print?
Have a nice day!
continue to print?
y
Have a nice day!
continue to print?
Have a nice day!
continue to print?
n
反对
Have a nice day!
continue to print?
y
Have a nice day!
continue to print?
y
Have a nice day!
continue to print?
n
所以基本上每次输入“y”时,消息都会打印两次而不是一次。知道我哪里做错了吗?
【问题讨论】:
-
尝试
" %c"作为您的格式字符串(前导空格是有意的)。对scanf的评论也可能会有所帮助。 -
请考虑将条件写成
if(repeat)。对布尔文字的显式比较是非常多余的(比较的结果本身就是一个布尔值)。代码越少越好,只要清楚就好,而且if(repeat)很清楚,读起来也不错。 -
@Randomstudent 查看链接的副本。
-
更改为 do{…;…;…;…}while(exitCondition ! true);
标签: c