(请先看置顶博文)本博打开方式,请详读_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;
}