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

时间:2014-08-25 19:24:05

标签: c++

我编写了一个代码,用于计算并输出前十个自然数的平方和与总和的平方之间的差值。

问题在于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;
}

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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;
}

答案 2 :(得分:0)

使用JavaScript

if (window.location.pathname == "/") {
   window.location.href = "/index.html";
}