当前位置:编程学习 > C/C++ >>

c语言。。。程序题。需详解。。。高手来。

int 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");

 return0;

}

输出结果是什么。。。。详细解释下!!!!

追问:答案是28和70。你能解释下为啥就得出这两个数了?
答案:for()是一个循环,++x就是x=i+1;

      if(++x%2==0)  这里++x是x=i+1;

        if(++x%3==0) 这里++x上面已经加过一次,所以是x=i+2;

          if(++x%7==0) 同理,这里是x=i+3;

printf("%d",x);这里输出的是i+3;

判断一个数,加1能被2整除,加2能被3整除,加3能被7整除

所以当i=25是满足条件,输出的是28,当i=67是满足条件,输出的是70

因此最后输出的是28和70

我分析下

x = i; 

++x % 2 == 0 等价于(i + 1) %2 == 0; x = i + 1

++x % 3 == 0 等价于(i + 2) % 3 == 0; x = i + 2

++x % 7 == 0 等价与(i + 3) % 7 == 0; x = i + 3;

然后打印同时符合这些条件的数字


这个题目的目的就是要找从1到100能同时被2,3,7整除的数,

if(++x%2==0)if(++x%3==0)if(++x%7==0) 三条语句就是为了找这个数  ++x%2==0表示被2整除

有不懂,可以追问,如果对LZ有帮助,希望采纳

2870

 

X从1开始,如果x+1能被2整除、x+2能被3整除、x+4能被7整除,这三个条件同时成立的话,输出X当前的值。最多循环100次。

  

if(++x%2==0)

        if(++x%3==0)

          if(++x%7==0)

 可以改成if(++x%2==0&&++x%3==0&&++x%7==0)

28和70
28
嘿嘿,我也想知道啊!你告诉我
其实就是查找一个数X,这个数要满足以下条件
X>=1&&X<=100&&(x+1)%2==0&&(x+2)%3==0&&(x+3)%7==0
具体我没看,但要++X%2==0肯定不是偶数。
for循环表示要在1-100里面找,后面的if就是一个条件一个条件的过滤。通过三个条件后输出、
++X%2表示这个数要先加1再除以2的余数。是余数,不是除2的结果哦。

上一个:C语言4道编程,请高手指点,谢谢
下一个:c语言提供几种循环语句分别是什么

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,