求改代码流程详解及输出结果 #include <stdio.h> main(){ int a=2,b=3,c=4,i=5; while(--i>0)

#include <stdio.h>
main(){
int a=2,b=3,c=4,i=5;
while(--i>0){
if(i%2==0) continue;
switch(i){
case 1:printf("%4d",1);
case 2:printf("%4d",2);
case 3:printf("%4d",3);break;
case 4:printf("%4d",4);break;
case 5:printf("%4d",5);break;
}}
printf("%4d\n",i);
if(a>b)
if(a>c) printf("%d\n",a);
else printf("%d\n",b);
}

#include <stdio.h>//导入io库
main(){ 
int a=2,b=3,c=4,i=5;//初始化变量
while(--i>0){ //i自减1,之后判断i是否大于0,若大于0执行循环体,
if(i%2==0) continue;//如果i是偶数,执行下次循环
switch(i){ //判断i的值
case 1:printf("%4d",1);//i=1,输出0001,
case 2:printf("%4d",2);//i=2或者i=1,输出0002
case 3:printf("%4d",3);break;//i=3或者i=2或者i=1,输出0003
case 4:printf("%4d",4);break;//i=4输出0004
case 5:printf("%4d",5);break;//i=5,输出0005
}}//结束循环
printf("%4d\n",i);//输出0000
if(a>b) //如果a>b
if(a>c) printf("%d\n",a);//如果a>c输出2
else printf("%d\n",b);//如果a<=c输出3
}
//输出结果:
//00030001000200030000
//

追问

请问后面的2和3是怎么输出来的
//i=2或者i=1,输出0002
//i=3或者i=2或者i=1,输出0003
为什么是这样的?

追答

i=1时 输出000100020003
因为case 1和case 2之后没有break,因此不跳出判断继续往下执行,直到遇到break

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答