一个C语言程序看不懂,求大神指教
#include<stdio.h>main(){inta=5;while(!(a-->5)){switch(a){case1:a++;case4:a+=4;case5:a...
#include<stdio.h>
main()
{ int a=5;
while(!(a-->5))
{ switch(a)
{ case 1:a++;
case 4:a+=4;
case 5:a+=5;break;
defalut:a-=5;
}
}
printf("%d\n",a);
}
这个结果是什么,怎么得出来的? 展开
main()
{ int a=5;
while(!(a-->5))
{ switch(a)
{ case 1:a++;
case 4:a+=4;
case 5:a+=5;break;
defalut:a-=5;
}
}
printf("%d\n",a);
}
这个结果是什么,怎么得出来的? 展开
3个回答
推荐于2016-11-25
展开全部
12.
a=5,a-->5是比较a>5不成立,结果为0,然后a--,a=4。
此时!(a-->5), 为(!(0)),即(1),while循环条件成立。
a=4,执行a+=4,a=8.由于后面没有break,所以还会执行a+=5.a=13.
然后break。
此时a-->5,13>5成立,结果为1,然后a=12.
而(!1)=(0),while循环条件不成立。结束循环。
输出a,即12.
a=5,a-->5是比较a>5不成立,结果为0,然后a--,a=4。
此时!(a-->5), 为(!(0)),即(1),while循环条件成立。
a=4,执行a+=4,a=8.由于后面没有break,所以还会执行a+=5.a=13.
然后break。
此时a-->5,13>5成立,结果为1,然后a=12.
而(!1)=(0),while循环条件不成立。结束循环。
输出a,即12.
2015-08-29
展开全部
结果是12
a-->5,按照符号的优先等级表示的是a--大于5,显然a--是4,所以!(a-->5)为真。运行switch。
switch(a),a现在为4,跳到case 4,a+=4表示a=a+4就是等于8,然后执行case 5:,a+=5等于13.然后break跳出switch。回到while。
!(a-->5)显然为非真,跳出while,前面运行了a--,所以a最终等于12.
a-->5,按照符号的优先等级表示的是a--大于5,显然a--是4,所以!(a-->5)为真。运行switch。
switch(a),a现在为4,跳到case 4,a+=4表示a=a+4就是等于8,然后执行case 5:,a+=5等于13.然后break跳出switch。回到while。
!(a-->5)显然为非真,跳出while,前面运行了a--,所以a最终等于12.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-08-29
展开全部
#include<stdio.h>
main()
{ int a=5; //a的初值是5,
while(!(a-->5)) //当a小于等于5时
{ switch(a)
{ case 1:a++; //当a=1时,从这一句执行到break
case 4:a+=4; //当a=4时,从这一句执行到break
case 5:a+=5; ////当a=5时,从这一句执行到break
break;
defalut:a-=5; 当a不等于1,4,5时执行
}
}
printf("%d\n",a);
}
a=5,经过while后a=4,从case 5执行a+=5(即a=a+5),所以a=,9.
a=9,不满足while语句,退出循环,
执行输出,a=9.
main()
{ int a=5; //a的初值是5,
while(!(a-->5)) //当a小于等于5时
{ switch(a)
{ case 1:a++; //当a=1时,从这一句执行到break
case 4:a+=4; //当a=4时,从这一句执行到break
case 5:a+=5; ////当a=5时,从这一句执行到break
break;
defalut:a-=5; 当a不等于1,4,5时执行
}
}
printf("%d\n",a);
}
a=5,经过while后a=4,从case 5执行a+=5(即a=a+5),所以a=,9.
a=9,不满足while语句,退出循环,
执行输出,a=9.
追问
额,结果是12啊,刚刚上机试过了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询