注册 登录
编程论坛 C++教室

本人初学者,请各位帮忙解答,谢谢!!

fanshh 发布于 2011-07-28 19:13, 491 次点击
int k,s,j;
for(k=2;k<6;k++,k++)
{s=1;
 for(j=k;j<6;j++)s+=j;
}
printf("%d\n",s);
这段程序的运行流程是怎样的?
int x=3;
do
{printf("%3d",x-=2);
}
while(!(--x));
这段程序中,“!(--x)”是什么意思?这段程序的运行结果是怎样的?
7 回复
#2
我是菜鸟C2011-07-28 20:35
int k,s,j;
for(k=2;k<6;k++,k++)//A。k初值为2,每次+2(因为有两个前置++),k<6,故k可取2,4.
{s=1;
for(j=k;j<6;j++)s+=j;//B。
}
printf("%d\n",s);
A处for执行2次,第一次,当k=2时进入循环,此时k=2,s=1.执行B处,for(j=2,j<6,j++)s+=j,即s=1+2+3+4+5.
               然后j=6,跳出循环B,此时s=15.
     再执行A ,此时k=4,进入循环,s又被重置为1,此时k=4,s=1,执行B,得到s=1+4+5=10.



int x=3;
do
{printf("%3d",x-=2);
}
while(!(--x));//我觉得应该是判断--x是否为0,为0则继续执行,不为0则退出。
运行结果是1    -2.
#3
循个2011-07-28 23:41
上面的结果是  10
   下面的结果是  1   -2
#4
fanshh2011-07-30 08:27
谢谢各位、、
#5
qq510990082011-08-04 17:34
2L说的真清楚。。
#6
xiaoshahai2011-08-04 22:08
恩,赞美一下二楼!
#7
jcw081201102011-08-09 15:10
#8
dengxusheng2011-08-09 19:42
2l 帅
1