武松打虎的故事概括100:C语言的问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/10 15:33:42
2. #include "stdio.h"
main()
{ int a, y;
a=10; y=0;
do {
a+=2;
y+=a;
if ( y>50 ) break;
}while(a=14);
printf("a=%d,y=%d\n", a , y);
}
这个题的答案是 a=16,y=60吗?
我觉得应该是 a=12 y=12

while(a=14); 是“=”而不是“==”,永远为真,只有( y>50 )才退出 。
(1)a=10+2=12,y=y+a=0+12=12,a=14;
(2)a=14+2=16,y=y+a=12+16=28,a=14;
(3)a=14+2=16,y=y+a=28+16=44,a=14;
(4)a=14+2=16,y=y+a=44+16=60;
所以 这个题的答案是 a=16,y=60

while(a=14)中的循环结束条件a=14是一个赋值语句,其结果永远是真,而break语句可以直接跳出for循环可作为该循环结束条件,所以该程序的执行过程应该是
a y
12 12
14
16 28
14
16 44
14
16 60
这是我们做程序题的习惯写法!应该比较清楚把!

就是a=16,y=60
a = 14了还要执行a+=2;y+=a;
所以就是a=16,y=60

a=14是一个赋值语句,它的值永远为14,而且同时将a置为14,所以只有当y>50的时候才会退出
而a在退出前的值总为16,所以答案应该是
a=16,y=60

a=16,y=60
a = 14了执行a+=2;y+=a;
所以a=16,y=60

晕呀