C ++前十个自然数的平方和与和的平方之间的差

问题描述 投票:1回答:2

i编写了一个代码,该代码计算并输出前十个自然数的平方和与平方和之间的差。

问题出在函数squareOfSum()。该函数应返回3025,但始终返回3024。即使我尝试将100放入括号中,我也会得到25502499(25502500是正确的)。不管我放在括号中的数字是多少,我总是遇到相同的问题。我在做什么错?

Here's a screenshot of my output.

#include <iostream>
#include <cmath>
using namespace std;

int sumOfSquares(int limit);
int squareOfSum(int limit);

int main()
{
    cout << sumOfSquares(10) << endl;
    cout << squareOfSum(10) << endl;
    cout << squareOfSum(10) - sumOfSquares(10) << endl;
}

int sumOfSquares(int limit)
{
    int sum = 0;
    for(int i = 1; i<=limit; i++)
    {
        sum +=pow(i,2);
    }
    return sum;
}

int squareOfSum(int limit)
{
    int sum = 0, square = 0;
    for(int i = 1; i<=limit; i++)
    {
        sum +=i;
    }
    square = pow(sum,2);
    return square;
}
c++
2个回答
6
投票

请注意,pow是使用浮点数的函数。优化可能会导致在隐式覆盖int期间导致舍入错误或截断。将pow(i, 2)替换为i*i,您将获得纯整数算术运算,从而得到精确的结果。


0
投票
#include <bits/stdc++.h> 
#include <algorithm> 
using namespace std;

int main()

{
int higher_limit = 100;
int SquaresOfSum = 0;
int SumOfSquares = 0,count=0;
for(int i=1;i<=higher_limit;i++){
    count += i;
    SumOfSquares += pow(i,2);
    }
SquaresOfSum = pow(count,2);
cout<<SquaresOfSum-SumOfSquares;
}
© www.soinside.com 2019 - 2024. All rights reserved.