for循环的理解?
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
int x;
for(int i=10;i<=100;i++)
{
x=i++;
if(x++%2==0)
if(x++%3==0)
if(x++%5==0)
cout<<x<<' ';
}
cout<<endl;
cin.get();
}
这个程序的结果为什么是
41 71 101,不理解他的意思呀,请帮帮忙,谢谢!
[解决办法]
有这么一个数,它+1后是2的倍数,再+1后是3的倍数,再+1后是5的倍数,再+1输出了。
41减去4,就是37,+1后是38,再+1就是39,再+1就是40.good
71减去4,就是67,+1后是68,再+1就是69,再+1就是70,ok
以后每隔30个有一个这种数字。
[解决办法]
这个跟for循环没有太大关系,这是x++的问题。x++意思是在当前语句中先处理x的数据,然后x = x + 1。
由于在函数体中又执行了一次i++,所以其实每次循环,i都加了2,而不是1。
if(x++%2==0) if(x++%3==0) if(x++%5==0) cout<<x<<' ';
[解决办法]
有这么一个数,它是2的倍数,再+1后是3的倍数,再+1后是5的倍数,再+1输出了。
41减去3,就是38,再+1就是39,再+1就是40.good
71减去3,就是68,再+1就是69,再+1就是70,ok
以后每隔30个有一个这种数字。
循环中,也有个限制条件,就是考察偶数。