#include<stdio.h>
void main()
{
int i=0,s=0;
do
{
if(i%3){i++;continue;}
i++;
s+=i;
}
while(i<11);
printf("%d\n",s);
}
答案是22,不理解为什么得出这个结果。
第1个回答 2011-08-19
也就是对3求余,=0就表示是3的倍数
第2个回答 2018-06-17
if(i%3)的意思是if里边如果是真,也就是如果是非零,那就执行if后边的,也就等价于 i%3!=0 就执行if后边的。
首先i=0;
if(0%3),0%3==0,所以等价于if(0),所以不执行后边的,直接执行下边的i++;s+=i;执行完之后i=1,s=1;
然后继续执行if(1%3) ,1%3!=0 ,所以相当于if(1) 所以执行后边的i++;continue,此时i=2;跳过本次循环,
然后继续执行if(2%3) 2%3!=0 所以相当于if(1) 所以执行后边的i++;continue,此时i=3;跳过本次循环,
然后继续执行if(3%3) ,3%3==0 ,所以相当于if(0) 所以不执行后边的,直接执行下边的i++;s+=i;执行完之后i=4,s=1+4=5;
就这么推下去
到最后就是1,4,7,10相加等于22
首先i=0;
if(0%3),0%3==0,所以等价于if(0),所以不执行后边的,直接执行下边的i++;s+=i;执行完之后i=1,s=1;
然后继续执行if(1%3) ,1%3!=0 ,所以相当于if(1) 所以执行后边的i++;continue,此时i=2;跳过本次循环,
然后继续执行if(2%3) 2%3!=0 所以相当于if(1) 所以执行后边的i++;continue,此时i=3;跳过本次循环,
然后继续执行if(3%3) ,3%3==0 ,所以相当于if(0) 所以不执行后边的,直接执行下边的i++;s+=i;执行完之后i=4,s=1+4=5;
就这么推下去
到最后就是1,4,7,10相加等于22