一个初学者级的switch语句,大家帮帮小弟我
一个菜鸟级的switch语句,大家帮帮我啊
我想要实现的是循环执行,当输入a,b,c时,打印出来,输入q的时候,退出,输入其他时打印wrong choice
可结果为什么每次输入a,b,c后都把option: a b c q 和wrong choice打印了一遍啊?
输入q的时候也并没有退出来
哪里错了啊我?
谢谢了!
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <stdlib.h> int main(void) { char ch; while(1) { printf("option: a b c q\n"); scanf("%c", &ch); switch(ch) { case 'a': printf("a\n"); break; case 'b': printf("a\n"); break; case 'c': printf("c\n"); break; case 'q': break; default: printf("wrong choice\n"); break; } } return 0; }
我想要实现的是循环执行,当输入a,b,c时,打印出来,输入q的时候,退出,输入其他时打印wrong choice
可结果为什么每次输入a,b,c后都把option: a b c q 和wrong choice打印了一遍啊?
输入q的时候也并没有退出来
哪里错了啊我?
谢谢了!
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <stdlib.h> int main(void) { char ch; while(1) { printf("option: a b c q\n"); fflush(stdin); //清空下缓冲区 scanf("%c", &ch); switch(ch) { case 'a': printf("a\n"); break; case 'b': printf("a\n"); break; case 'c': printf("c\n"); break; case 'q': return 1; //直接return,break只是switch退出了,但while不退出 default: printf("wrong choice\n"); break; } } return 0; }
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <stdlib.h> int main(void) { char ch; while(1) { printf("option: a b c q\n"); scanf("%c", &ch); rewind(stdin); switch(ch) { case 'a': printf("a\n"); break; case 'b': printf("a\n"); break; case 'c': printf("c\n"); break; case 'q': /*break;*/ exit(1); default: printf("wrong choice\n"); break; } } return 0; }
------解决方案--------------------
int main(void)
{
char ch;
while(1)
{
printf("option: a b c q\n");
fflush(stdin);
scanf("%c", &ch);
switch(ch)
{
case 'a':
printf("a\n");
break;
case 'b':
printf("a\n");
break;
case 'c':
printf("c\n");
break;
case 'q':
break;
default:
printf("wrong choice\n");
break;
}
if(ch=='q')
break;
}
------解决方案--------------------
至于多余的option: a b c q,你要的是循环,这不是多余的; 你输入了选项之后,回车符留在你的输入字符队列中,等下次循环的时候会读取这个回车符,由于没有对用的处理函数,所以会执行default下的语句,也就是:wrong choice 了
------解决方案--------------------
/*
当输入a,b,c时,打印出来,
输入q的时候,退出,
输入其他字母或字符串的时候打印wrong choice
直接按Enter回车换行键的话,不会重复输出option: a b c q
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch;
int quit_flag;//设置一个跳出while循环的标识变量
while(1)
{
printf("option: a b c q\n");
fflush(stdin);//清空缓冲区
do
ch=(char) getchar();