main() {int 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=50 不清楚为什么
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/07 02:51:17
![main() {int a=10,y=0; do{ a+=2;y+=a; if(y>50)break; }while(a=14); printf(](/uploads/image/z/2445778-10-8.jpg?t=main%28%29+%7Bint+a%3D10%2Cy%3D0%3B+do%7B+a%2B%3D2%3By%2B%3Da%3B+if%28y%3E50%29break%3B+%7Dwhile%28a%3D14%29%3B+printf%28%22a%3D%25d%22+y%3D%25d%5Cn%22%2Ca%2Cy%29%3B+%7D%E7%AD%94%E6%A1%88%E6%98%AFa%3D16+y%3D50+%E4%B8%8D%E6%B8%85%E6%A5%9A%E4%B8%BA%E4%BB%80%E4%B9%88)
main() {int 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=50 不清楚为什么
main() {int 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=50 不清楚为什么
main() {int 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=50 不清楚为什么
a=10,y=0
进入循环,执行a+=2,y+=a,得到:a=12,y=12;
y>50不成立,不执行break;
执行while(a=14),a=14是赋值语句,永远成立,所以不断循环,此时a=14,y=12;
再次进入循环,执行a+=2,y+=a,得到:a=16,y=28;
同样道理,y>50不成立,不执行break,a=14赋值语句使得循环继续下去,此时a=14,y=28;
再次进入循环,执行a+=2,y+=a,得到:a=16,y=44;
同样道理,y>50不成立,不执行break,a=14赋值语句使得循环继续下去,此时a=14,y=44;
再次进入循环,执行a+=2,y+=a,得到:a=16,y=60;
这次y>50成立,执行break,跳出循环,此时a=16,y=60;
打印a和y的值为:a=16 y=60.
y的值是60,不是50.
此外,你的printf里多了一个双引号.