一个c语言的问题~~高手快进~~~

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:30:08
main()
{intx,I;
for(I=1,I<=100;I++)
{x=I;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}
printf("\n")
}
输出的是27,70
为什么捏?????
帮帮我把

输出应该是28,70吧。怎么可能出了个27呢。

++x是x先自加1再运算。于是当x==25时,++x==26,被2除余0。再++x==27,被3除0,再++x==28被7除余0。
同样,x==67 ++x=68 ++x=69 ++x==70

#include <stdio.h>
void main()
{
int x,I;
for(I=1;I<=100;I++)
{
x=I;
if(++x%2==0)
{
if(++x%3==0)
{
if(++x%7==0)
{
printf("%d",x);
}
}
}
}
printf("\n");
}
输出:28 70

程序应该是这样的:
main()
{int x,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d ",x);
}
printf("\n") ;
}

输出是28 70。
程序中是if语句的嵌套使用,也就是说,要使程序做“printf”这个语句,必须使前面的三个条件全部成立。
表达式++x相当于是做了x=x+1,要使++x分别整除2,3,7,由此下推,只有得出答案28 70了

2870