#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,这是怎样算出来的??
參考答案:%是用来求余的,也就是求余数.
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了.