C语言(CED)编写程序,求sum=1*1*1+2*2*2+3*3*3+4*4*4+5*5*5+····+n*n*n

(请先看置顶博文)https://blog.csdn.net/GenuineMonster/article/details/104495419

编写程序,求sum=1*1*1+2*2*2+3*3*3+4*4*4+5*5*5+····+n*n*n

上述题目很简单,但是偶尔也会犯错误,例如如下代码的错误:

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    scanf("%d",&n);
    int s=0;
    int i=1;
    for(i=1;i<=n;i++)
    s=s+pow(i,3);
    printf("%d\n",s);
    return 0;
}

其真实结果应该为2732409,那为什么会有“6”的差距呢?

实际上就出现在“int”和“double”上的差距了,是因为int是整形定义,当输入的n的值为57时,超过了其最大范围,所以才有“6”的差距。

所以正确的代码是:

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    scanf("%d",&n);
    double s=0;
    int i=1;
    for(i=1;i<=n;i++)
    s=s+pow(i,3);
    printf("%.0f\n",s);
    return 0;
}

发布了62 篇原创文章 · 获赞 93 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/GenuineMonster/article/details/86651440