谢谢各位上次的解答,继续我的问题:
1
对于FOR语句FOR(........;i++)中的i++换为别的表达式也一样成立对吗?比如把i++换成2i或15-4i或
i+++i或i---i时赋值执行和i++时的一样吗?
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......请教此题何解.......
语句while(a=14)是当做给a赋值??改为a=13也一样吗???还是说满足a=14的条件时才执行do语句
或者说括号里的语句为真值时都可以执行,相当于while(1)???
----------------解决方案--------------------------------------------------------
先回答第一个问题:
在一般情况下是不行的,因为i++是完成i=i+1的功能,如果写成其他的形式的话,就不能保证变量i的值改变,这构成一个死循环。
第二个问题:
当y>=50时,程序才会退出do循环,因为表达式(a=14)的值为14,一直为真,不起作用,所以就12+14+16<50和12+14+16+18>50符合条件!
你今后在遇到如while(a=14)时,它就是while(1)了,注意!
----------------解决方案--------------------------------------------------------
那a的值呢? a+=2,y+=0;
a=12,y=12
a=14,y=26
a=16,y=42
a=18,y=60.....
if(y>50) break
y的值可以满足,那a为何等于16(习题答案)这样循环a应该为18.
----------------解决方案--------------------------------------------------------
谢谢各位上次的解答,继续我的问题:
1
对于FOR语句FOR(........;i++)中的i++换为别的表达式也一样成立对吗?比如把i++换成2i或15-4i或
i+++i或i---i时赋值执行和i++时的一样吗?
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......请教此题何解.......
语句while(a=14)是当做给a赋值??改为a=13也一样吗???还是说满足a=14的条件时才执行do语句
或者说括号里的语句为真值时都可以执行,相当于while(1)???
第二题的答案应该是12 12吧?
----------------解决方案--------------------------------------------------------
更正一下:程序段中的 if(y<50)break;---->if(y>50)break;
习题答案为a=16,y=60
----------------解决方案--------------------------------------------------------
我的问题还没解决呢,a=16是怎么得的?
----------------解决方案--------------------------------------------------------
最后一次执行时判断while(a=14)后执行a+=2;y+=a;使得a为16,y的值足以出循环
----------------解决方案--------------------------------------------------------