C++问题 郁闷啊

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:41:04
题目是2的平方+4的平方+(偶数的平方)+。。。n的平方<1000,求n的值,我编的是:
#include<iostream>
using namespace std;
int main()
{
int n=0,sum=0;
do{
n+=2;
sum+=n*n;

}while(sum<1000);
cout<<n<<endl;

}
可答案怎么会是18呢,好像是16才对的吧。。各位高手请改正下~~是不是n+=2之后16多加了2?

是这样的,在条件不满足的时候,即sum = 1140时,此时n是18,循环退出;
而你是想要sum<1000的n值,即循环退出后的前一步,所以直接在退出循环后添加 n-=2;即可:
#include<iostream>
using namespace std;
int main()
{
int n=0,sum=0;
do{
n+=2;
sum+=n*n;

}while(sum<1000); // 条件不满足(sum>=1000)就退出
n -= 2; // n的前一个是满足条件的最后一个值,所以添加这个才符合逻辑
cout<<n<<endl;

}

当然是18;
当执行到n=16的时候,sum的值还是小于1000的,循环条件满足,再次执行,n+=2,n=18,这个时候sum的值才大于1000,于是条件不满足,退出。

执行完后,n=18;sum的值肯定要大于1000

一楼正解

一楼 正解