还有如果想让输入Y就会停止程序,是这样写吗,如果不是怎么改啊
switch (表达式或属性){
case 值1 : 语句1
break;
case 值2 : 语句2
break;
...
default : 值n
break;
}
从表达式或属性值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case。
假如任何一个case语句的值都不等于表达式或属性的值,就运行可选标签default之下的语句。
假如表达式或属性的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。追问
case 值1 : 语句1
break;
case 值2 : 语句2
break;
...
default : 值n
break;
}
从表达式或属性值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case。
假如任何一个case语句的值都不等于表达式或属性的值,就运行可选标签default之下的语句。
假如表达式或属性的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。追问
谢谢回答!
这个运行顺序我知道,但是我写的这个即使属性和值符合case中的,而且case后有break,但他还是会运行default里的我不理解。虽然有break, 但他不会跳出switch,而是运行一次default后才跳出。。。这个不知道为社么+_+
温馨提示:答案为网友推荐,仅供参考
第1个回答 2017-04-05
在switch语句之前加一句fflush(stdin);,即可。追问
我试了,还是不行........
在每个scanf后面都加一句fflush(stdin);
追问我知道了,因为你输入P是要按回车键,但回车键会被当作一个字符来处理,因为没有符合的值,所以会运行到default。
解决方法就是在每一个scanf后面加一个getchar(); 因为getchar()具有识别回车键的作用,所以,回车键会被getchar识别转化,这里只会起到停顿的作用,不会影响后面的操作。
这是我操作成功的图,你们可以对比一下。谢谢你们的回答啦。。。
第2个回答 2020-01-05
scanf();后面加个getchar();
第3个回答 2022-04-10
case与值要有空格分隔开。