一个菜鸟级的switch语句,大家帮帮我啊
#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;}#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;}
[解决办法]
#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();
while(ch=='\n');
switch(ch)
{
case 'a':
printf("a\n");
quit_flag=0;
break; //此处的break仅仅是跳出switch语句
case 'b':
printf("b\n");
quit_flag=0;
break;//此处的break仅仅是跳出switch语句
case 'c':
printf("c\n");
quit_flag=0;
break;//此处的break仅仅是跳出switch语句
case 'q':
quit_flag=1;
//exit(1);
//return 0;
break;//此处的break仅仅是跳出switch语句
default:
quit_flag=0;
printf("wrong choice\n");
break;//此处的break仅仅是跳出switch语句
}
if(quit_flag == 1) break;//此处的break是跳出while循环
}
return 0;
}
/*
方法一:设置一个判决变量quit_flag,在while循环中而不是在switch语句中使用break语句跳出while循环
方法二:主函数直接返回值,退出程序,例如 return 0;
方法三:使用系统函数exit
*/
[解决办法]
每次输入的时候用个getchar()试试
也就是在scanf()后用