c语言问题switch

2024-12-14 14:58:55
推荐回答(5个)
回答1:

答案为:A
a = 15那么a%3就等于0(%为求模运算,整除则为0)
然后进入case 0的情况,执行m++,则m的值为1,break后,执行printf(输出)

回答2:

你上面的代码在输入时,我估计写错了,大家一致都说是1,按照你写的确实是1,但是你也说到你上机调试过,所以我给你改了下

main()
{ int a=15,b=21,m=0;
switch(a%3){
case 0:m++;break;
case 1:m++;

switch(b%2){
default:m++;
case 0:m++;break;
}

printf(“%d\n”,m);
}

你对照下,跟你的原题是不是一样,下面是分析等于3的问题
首先执行第一个switch,因为a%3=0,所以执行case 0:m++;break;
注意那个break;必须写不然后面的cas 1 也会执行
下面的也是一样default:m++; b%2只要不是0 都会 m的值都会自增 因为后面没有加break;所以后面的语句就被执行了,m的值最终是3;而不是2
你看是不是这样。。。

回答3:

(因为当符合一个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

回答4:

#include
#include
前面有这两个头文件吧,我运行了 结果是A啊,a = 15那么a%3就等于0(%为取余数运算)case 0之后直接就break掉了m只++了一次。

这是运行的结果,答案会错的哦!

回答5:

答案是1,M就++了一次