C语言初学者,几个简单问题,求解释!

(1)、
#include<stdio.h>
void main()
{
int x=0,y=0;
while(x<15) y++,x+=++y;
printf("%d,%d\n",y,x);
} 输出结果是8,20
(2)、
#include<stdio.h>
void main()
{
int i=1,s=3;
do
{
s+=i++;
if(s%7==0)continue;
else ++i;
}while(s<15);
printf("%d",i);
} 输出结果是8
(3)、
#include<stdio.h>
void main()
{
int a,y;
a=10;y=0;
do
{
a+=2;
y+=a;
if(y>50) break;
}
while(a=14);
printf("a=%dy=%d\n",a,y);
} 输出结果是a=16y=60
(4)、
#include<stdio.h>
void main()
{
int a=0,i;
for(i=0;i<5;i++)
{
switch(i)
{
case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("a=%d\n",a);
} 输出结果是a=41
呵呵,貌似摸索出来了,都还没人回答,我问一下case 0是不运行的是不是,还是和case 3共用a+=2,不运行的话就能得到41

先说1
while(x<15) y++,x+=++y;这里中间的是逗号,代表y++,x+=++y;是一个语句,由于优先关系,所以先++y,然后是y++,然后是x=x+y,这样的话,一次循环以后,x=2,y=2,然后每次循环后,y都会加2,x加上上一次的y+2,这样,第二次,x=6,y=4,第三次,x=12,y=6,第四次,x=20,y=8
等同于
while(x<15)
{
y=y+2;
x+=y;
}
第2题
do {
s+=i;
i++;
if(s%7==0)continue;
else ++i;
}while(s<15);
printf("%d",i);
每一次循环i+2,直到s=7才改变,首先它能不能等于7?测试是不能的,if(s%7==0)continue;等于无用代码,这个也不是什么大循环,你试着算下,用纸笔很容易。
第三题
计算机中,除了0以外的数字都是真的,while(a=14);是个死循环,a不等于0根本不用看,y大于50就结束循环输出结果……
第四题
循环是这样的,选择函数switch是会跳的
第1次是0,所以a+2+3+5;
第2次是1,跳过了a+2,就是a+3+5
第3次是2,跳过了a+2,就是a+3+5
第4次是3,所以a+2+3+5;
第5次是4,所以a+5;

好了,你的问题解决了,最近我分少,给点分交个朋友把……
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-30
可以运行,这主要是让你理解自加运算符、continue和break语句
可以运行,这主要是让你理解自加运算符、continue和break语句
1、 while(x<15) y++,x+=++y;
printf("%d,%d\n",y,x);
第一次进入循环后,y自加1,但此时y还是0,因为是y++不是++y。之后执行x+=++y,此时的y值已经是1了,然后再++y就是2了,++y在计算中是取++后的y。因为两条语句之间是逗号,所以都在循环体中。
2、do
{
s+=i++;
if(s%7==0)continue;
else ++i;
}while(s<15);
第一次进入循环,s+=i++:因为是i++所以,计算中先取值后+,s就等于4。
if(s%7==0)continue;如果能s被7整除,就不执行循环体后面的语句,进入下一轮循环。
3、 if(y>50) break;
如果y>50就不执行循环体后面的语句并跳出循环。
4、 case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
i从0到4,因为没有break语句,为0时5个case全执行;为1时case 1: case 2 default:执行,以此类推。

针对hejitianxia的跟贴,还要补充一点,完全属于探讨。
第一题:我认为逗号运算符计算顺序为:从左至右,最后计算的表达式的值和类型便是整个表达式的值和类型,简单的例子是:a=(1,2,3); 结果为a=3。所以y++,x+=++y是先算的y++然后算x+=++y。
第二题:s在第二次循环就等于7,else ++i;在第二次循环就没执行。
第三题:只要设置了跳出语句就不是死循环。while(a=14);其中a=14是条赋值语句,每一次执行到while(a=14);就将a赋值为14,循环体中有a+=2;所以a=16。同时a=14又是while的循环条件,14不为0,while一直循环直到y>50结束循环。
再次声明:只是讨论。
第2个回答  2010-08-29
没有break就一直运行下去啊
第3个回答  2010-08-29
这个怎么解释呢,哪句话不懂啊
相似回答