答案为:A
a = 15那么a%3就等于0(%为求模运算,整除则为0)
然后进入case 0的情况,执行m++,则m的值为1,break后,执行printf(输出)
你上面的代码在输入时,我估计写错了,大家一致都说是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
你看是不是这样。。。
(因为当符合一个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
#include
#include
前面有这两个头文件吧,我运行了 结果是A啊,a = 15那么a%3就等于0(%为取余数运算)case 0之后直接就break掉了m只++了一次。
这是运行的结果,答案会错的哦!
答案是1,M就++了一次