一道关于C语言的小题

来源:百度知道 编辑:UC知道 时间:2024/06/08 14:13:20
main()
{ int a=10,y=0;
do
{ a+=2;
y+=a;
printf("a=%d y=%d\n",a,y);
if(y>20) break;}
while(a=14);
}
这道题输出的结果为什么会是a=12 y=12
a=16 y=28
??
我怎么觉得应该是a=12 y=12
a=14 y=26啊``望C语言大侠帮帮忙

你要注意这个句子while(a=14); 是把14赋值给a,不是判断a是不是等于14,这样a=14后再执行do里面的循环,然后y的值是28,大于20跳出循环,所以是a=12 y=12 a=16 y=28
明白了不~~

while(a=14);
1.这一直都是真,所以得到y>20才结束循环.
2.每次开始循环a都被赋值为14;
a+2=14+2=16
y+a=12+16=28

因为a=14时满足条件while(a=14)
就会在运行一次a+=2;
a就=16;
而当a=16时就不满足条件while(a=14)
所以y也=28;

你用了while(a=14)
就在第一次执行后,对a赋值垃~~然后a=14+2, y=16+12,brerk

你想要的结果应该改称while(a<14),你试试

第一次 循环后y=12,第二次时y=26.已经大于20就跳出去了。所以就是12,12

while(a==14); 就行了