下面的是从love_me的回复贴过来的,只是为了说清楚问题,没有别的含义,谢谢
第一题,while(a=14)括号里是个赋值语句,不是判断语句,至于y的那个判断y在多次循环中值是保留的,所以每次循环都是增加值的,这个循环也正是由这个条件作为跳出条件的,第1题的答案是对的
# include <stdio.h>
void main ()
{
int a,y;
a=10;y=0;
do {
a+=2;
y+=a;
if (y>50)break; //多余的判断 10+2能大于50么?
printf ("a=%d y=%d\n",a,y);
}while (a=14); //12能等于14么? 就算等于也应该是==不是=,满足了条件后循环是空的,让人郁闷~
printf ("a=%d y=%d\n",a,y);
}
a=12 y=12
a=16 y=28
a=16 y=44
a=16 y=60
why the result is not 18,60
第2题,i的初值-1,-1<=i这个判断为真,则为1,再判断<1为假,所以for循环不执行只打印i,是-1
# include <stdio.h>
void main ()
{
int a,i;
for (a=1,i=-1;-1<=i<1;i++) //这里不对
{
a++;printf ("%2d",a);
}
printf ("%2d",i); //这里无法理解,因为for不对
}
第3题,我做的答案是31-1
switch语句根本就不起作用,对2取模,不是1就是0,和进入条件4,6都不匹配
#include<stdio.h>
void main()
{
int i=5;
do {
switch (i%2)
{
case 4:i--;break; 4/2的余数是5,口算都算得出来,2个case在这里没用处
case 6:i--;continue; //case只能用break退出循环
}
i--;i--; //2个i-- ?
printf ("%d",i);
}while (i>0); //whiel条件又是空循环
}
I don't understand at all,I hope you can explain it to me >_<