C语言switch问题。2
发布网友
发布时间:2023-10-10 19:24
我来回答
共5个回答
热心网友
时间:2024-11-18 23:49
(因为当符合一个case之后就不在进行判断了,一直进行case后的语句。)重点
你不明白的可能就是这里。少了一个}
呵呵我猜的!
switch(a%3)
{
case
0:m++;break;
case
1:m++;}
这里
a%3=0
所以m++,然后跳出switch
switch(b%2)
{
default:m++;
case
0:m++;break;
}
这里会执行default:m++;
然后再执行
case
0:m++;break,(因为当符合一个case之后就不在进行判断了,一直进行case后的语句。)重点
所以m=3;
还不明白可以参考老谭的《C程序与设计》的104-105
热心网友
时间:2024-11-18 23:50
case 1:
这个后面少了break;
所以会继续执行 case 2: printf("**2**"); break;
后面加一个break,结果就是**0**”
#include <stdio.h>
main()
{
int a=1, b=0;
switch (a)
{
case 1:
switch (b)
{
case 0: printf("**0**"); break;
case 1: printf("**1**"); break;
}break;
case 2: printf("**2**"); break;
}
}
希望能帮到你。。。。追问可a是1,而不是2。。
热心网友
时间:2024-11-18 23:50
结果应该是a=2,b=1,因为你在switch(x)里,case
1中只是对switch(y)的break,而没有对x执行break,所以会执行case
2的a++和b++再break,所以a=2,b=1。。。至于编译,看不出有什么问题啊,你的工程没建错吧?
热心网友
时间:2024-11-18 23:51
你这里Case 1:的内容其实就是swtich(b){。。。。}这整个复合语句,这一点一定要清楚,a=1,执行switch(b)的内容,b=0,输出0,注意这里的break只能跳出switch(b)这个复合语句,这点要注意,他不会既跳出switch(b)又跳出switch(a),又因为switch(b)复合语句后没有break语句,因此继续执行switch(a)中的case2,输出2,然后break跳出switch(a),程序执行完毕。我的天。打的我好累啊,希望你能明白,分给我吧
热心网友
时间:2024-11-18 23:52
首先你要了解 switch语句。因为a=1,所以执行switch (a) (它从case 1:
开始执行),然后遇到switch (b),因为b=0,所以从case 0开始执行,结果输出“**0**”,因为case 0后有break,所以跳出 switch (b)中的循环,执行switch (a)中的case 2,结果输出“**2**”。所以最后的结果是“**0****2**”