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 后面就不知道怎么算了 展开
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 后面就不知道怎么算了 展开
4个回答
展开全部
%是用来求余的,也就是求余数.
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了.
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了.
展开全部
如果I%0的结果没有余数就运行下面的代码当I小于7时出结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一次循环时 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
第二次循环时 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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个程序总共进行了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();
}
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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询