C语言的问题!会高分悬赏!!!

来源:百度知道 编辑:UC知道 时间:2024/09/22 09:46:08
1:#include"stdio.h"
main()
{
int x=0,y=5,z=3;
while(z-->0&&++x<5)
y=y-1;
printf("%d,%d,%d\n",x,y,z);
}这道题 答案为什么是3,2,-1。请把每个详细步骤说一下

2:#include"stdio.h"
main()
{
int i,n=0;
for(i=2;i<5;i++)
{
do{
if(i%3) continue;
n++;
}
while(!i);
n++;
}
printf("n=%d\n",n);
}这个答案为什么是4?详解。

3:#include"stdio.h"
main()
{
int n,t=1,s=0;
scanf("%d",&n);
do{s+=t;t-=2;}
while(t!=n);;
printf("t=%d\ns=%d",t,s);
} 为什么非得是负奇数才能避免死循环???什么是死循环?该程序的哪个步骤能构成死循环?
拜托各位兄弟姐妹们,如果解释的好
绝对追加分!!!

第一题
核心在于z-->0&&++x<5 意思是z-->0要和++x<5同时成立才执行循环
z=3,x=0时,z--=3,z的值变为2 ++x=1,x的值不变 成立,执行循环
y=y-1=5-1=4

z=2,x=0时,z--=2,z的值变为1 ++x=1,x的值不变 成立,执行循环
y=y-1=4-1=3

z=1,x=0时,z--=1,z的值变为0 ++x=1,x的值不变 成立,执行循环
y=y-1=4-1=3

z=0,x=0时,z--=-1,z的值变为 -1 ++x=1,x的值不变 不成立,退出循环
又因为y=y-1在外部
所以还需执行一次
y=y-1=3-2

输出结果x=0,y=2,z=-1
这个不知道是你写错答案还是把x++写成++x了,你再运行一次看看
如果改成x++
那么就和答案一样

第二题
for(i=2;i<5;i++)
{
do{
if(i%3) continue;
n++;
}
while(!i);
n++;
的意思是当i可以被3整除,continue执行第一个n++,接着!i不等于0时,执行第二个n++
当i不可以被3整除时,跳出,执行第二个n++

所以i=2时,执行第二个n++,n变为1
i=3时,执行第一、二个n++,n变为3
i=4时,执行第二个n++,n变为4
所以答案会是4

第三题
int n,t=1,s=0;
scanf("%d",&n);
do{s+=t;t-=2;}
while(t!=n);;
printf("t=%d\ns=%d",t,s);
要求输入一个整数n
然后执行s+=t;t-=2 所以有s=s+t