(请先看置顶博文)本博打开方式,请详读_liO_Oil的博客-CSDN博客_怎么把androidstudio卸载干净
编写程序,求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;
}