下面C++程序的输出结果是:

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:15:19
下面程序的输出结果是:
#include<iostream>
using namespace std;
int main ()
{
int x;
for(int i=1;i<=100;i++){
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
cout<<x<<',';
}
cout<<endl;
}
答案是28,70,为什么啊?

因为当i=25时
运行if(++x%2==0) ++x x=26 满足条件
运行if(++x%3==0) ++x x=27 满足条件
运行if(++x%7==0) ++x x=28 满足条件
所以输出28

第一次++x为26可以整除2,然后值++为27能整除3,然后值++为28能整除7.
70同理.

根据代码返退可以看出
if(++x%7==0) 最后x应是7的整数倍
if(++x%2==0) x自加两次前是2的整数倍 所以最后x自加两次后也是2的整数倍
所以最后x是14的整数倍
所以原代码可写成
for (x = 0 ; x < 100; x += 14)
{
if ( (x - 1) % 3 == 0)
cout << x <<",";
}
cout <<endl;

++在前,加之后的结果参与运算