c语言问题

#include<stdio.h>voidmain(){inti=0,s=0;do{if(i%2){i=i+2;}i++;s=s+i;}while(i<7);printf... #include<stdio.h>
void main()
{
int i=0,s=0;
do{
if (i%2){i=i+2;}
i++;
s=s+i;
}while(i<7);
printf(“%d\n”,s);
}
结果得:18,这是怎样算出来的??
没有余数的是4,5,6 后面就不知道怎么算了
展开
 我来答
april_110
2006-08-21 · TA获得超过151个赞
知道答主
回答量:100
采纳率:0%
帮助的人:0
展开全部
%是用来求余的,也就是求余数.
while(i<7)这句话控制着下面的循环,先执行第一遍操作,完以后判断是否满足i<7,不满足的话就运行下句printf(“%d\n”,s); 不再循环了.
第一次循环时i=0且s=0,0%2等于0,所以if(i%2)等同于if(0),0代表假,它就不能执行{i=i+2;}这条语句了,直接执行i++; 和s=s+i;所以i=1,s=1.
第二次循环时i等于1,i%2等于1,所以if(i%2)等同于if(1),除0外都代表真,它可以执行{i=i+2;}这条语句,i=3,然后再执行i++; 和s=s+i;得到i=4,s=5
第三次循环时i等于4,i%2等于0,同第一次循环,直接执行i++; 和s=s+i;所以i=5,s=10.
第四次循环时i等于5,i%2等于1, 所以同第二次一样,先执行{i=i+2;}得i=7, 再执行i++; 和s=s+i;得到i=8,s=18.
此时i大于了7,所以跳出循环.运行printf(“%d\n”,s); 输出值18了.
百度网友a80f481
2006-08-21 · TA获得超过480个赞
知道小有建树答主
回答量:737
采纳率:0%
帮助的人:217万
展开全部
如果I%0的结果没有余数就运行下面的代码当I小于7时出结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
supersarah
2006-08-21 · TA获得超过7151个赞
知道大有可为答主
回答量:2623
采纳率:80%
帮助的人:1218万
展开全部
第一次循环时 i == 0,i%2 == 0,所以,i +=1, s+=1
第二次循环时 i == 1,i%2 == 1, 所以,i +=3, s+=4
第三次循环时 i == 4, i%2 == 0, 所以, i +=1, s+=5
第四次循环时 i == 5, i%2 == 1, 所以,i +=3, s+=8
然后 i > 7 成立跳出循环,s = 0+1+4+5+8 = 18
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c78ad02
2006-08-21
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
你这个程序总共进行了4次循环:
1、刚开始s=0 i=0,if不成立,最后i=1,s=s+i=1
2、s=1 i=1,if成立,所以,i=i+2=3,最后i=4 s=5
3、i=4 s=5,if不成立,最后i=5,s=s+i=10
4、s=10 i=5,if成立,所以,i=7,最后i=8 s=s+i=18
5、i>7,跳出循环

如果无法理解,用下面的代码运行一下就明白了

#include<stdio.h>
void main()
{
int i=0,s=0;

do
{
printf("out s=%d ",s);
printf("i=%d\n",i);
if(i%2!=0)
{
i=i+2;
printf("in i=%d\n",i);
}

i++;
s=s+i;

printf("last s=%d ",s);
printf("i=%d\n",i);
printf("end s=%d\n\n",s);
}while(i<7);

printf("s=%d\n",s);

getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式