C语言:分析switch结果运行结果,程序如下

大家帮我说明下从for循环开始每次选择后s的执行变化,分析运行结果
#include<stdio.h>
int main()
{
int s=0,n;
for(n=0;n<3;n++)
{
switch(s)
{
case 0:
case 1:s+=1;
case 2:s+=2;break;
case 3:s+=3;
default:s+=4;
}
printf("%d,",s);
}
return 0;
}

#include<stdio.h>
int main()
{
int s=0,n;
for(n=0;n<3;n++)//这个循环说明要执行3次,n 从0开始到2共3次循环
{
switch(s)
{
case 0:
case 1:s+=1;
case 2:s+=2;break;
case 3:s+=3;
default:s+=4;
}
printf("%d,",s);
}
return 0;
}
循环体里边共两条语句,一条是多分支语句也就是switch,另一条是输出,当这两条都执行完认为循环体结束,执行n++,然后再判断条件,成立的话继续执行循环体。
循环体是这样执行的:先执行第一条语句多分支语句,然后是输出。
当n=0时,也就是第一次循环:s=0,找case 后跟0的,找到执行向下全部执行,所以执行s=s+1(这时s=1),和s=s+2(这时s=3),遇到break终止下边没有执行的语句跳出多分支语句,说明switch执行完了,然后输出s为3
当n=1:switch里边是3,找case 3,执行后s=6,再向下执行s=10;输出s为10
当n=2:switch里边是10,找case 10,没有的话找default,s=14,输出s为14

switch( 表达式)//这个地方不能加分号,表达式必须是字符型或整型
{ case E1 : 语句组 1; //case 与E1(即常量)之间用空格分隔
case E2 : 语句组 2;// case后的常量不能相同且常量后必须加冒号
…….
case En : 语句组 n;
[default: 语句组 ;]
}
执行过程:
一、计算
二、找case
三、从找到的case开始,往下全部执行
四、若没找到case,则从default开始往下全部执行,
若没default则结束switch语句。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-28
结果:3,10,14,请按任意键继续. . .
其实这道题是考察你对 break; 用法的了解
在程序执行的过程中 当遇到break 就跳出本次循环 ~~~ 就是这样意思 !

简单吧!加分!

(1) 因为第一次循环 for n=0; 进入Switch ( 满足条件s=0) s+=1; / / 意思是s=s+1;
开始执行 case 0:
case 1: s=s+1;
case 2 : s=s+2; break; 现在输出s结果就是 3 ;
(2) 第二次for n=1; 进入Switch (满足条件s=3)
开始 执行 case 3 : s=s+3;
default : s=s+4; 现在输出s的结果就是 10;
(3) 第三次for n=2 ;进入Switch (满足条件s=10)
开始执行 default : s=s+4 ;
现在输出s的结果就是 14
第2个回答  2017-11-03
n=0,s=0,找到case 0,空语句,继续执行case 1,s=1,没有break,不中断,继续执行case 2,s=3,有break,中断,输出3,

n=1,s=3,找到case3,s=6,没有break,不中断,继续执行default,s=10,输出10,
n=2,s=10,找到default,s=14,输出14,
因此输出结果为3,10,14,
第3个回答  推荐于2017-11-03
第一次 s=0 case 0:
case 1:s+=1;
case 2:s+=2;break;执行这几句 退出s=3;
第二次case 3:s+=3;
default:s+=4; s=10
第三次default:s+=4;
执行完了程序结束 s=14
输出14追问

也就是说,辨别的s值如,0,1,2,3这些只管分辨出从哪里开始,然后结束要看有没有break或者到不到最后,不是得到的s值跟条件值0.1.2.3这几个不一样就不执行这一分支了哦?

追答

看s的值跟哪个case值相同 就执行这个case往下的所有代码 直到遇到break或default退出

本回答被提问者采纳
第4个回答  2012-07-28
因为s初始值是0,和case匹配为0 成功 后面没有语句,就不进行运算,也没有break等语句就一句一句向下执行,到最后跳出switch输出s=0.
相似回答