【发布时间】:2019-05-26 20:40:12
【问题描述】:
想法是这样的:http://prntscr.com/m0xopk,除了 5 外,它工作得很好,当我给 5 时它计算错误。我不明白为什么?
int i,a,n;
int sum = 1;
scanf("%d",&a);
scanf("%d",&n);
for(i = 1;i <= n;i++){
sum *=pow(a,i);
}
printf("%d",sum);
【问题讨论】:
-
pow是一个浮点函数,因此与计算机上的所有浮点运算具有相同的问题,并在Is floating point math broken? 中进行了讨论对于整数,我建议您自己编写函数,但要小心溢出。 -
这是函数之前的作业,所以我没有使用函数,谢谢你的回答
-
另外请阅读how to ask good questions,以及this question checklist。编辑您的问题,为我们提供导致其失败的完整输入,并告诉我们预期和实际输出。
-
对于
a=5和n=5,结果是30517578125,对于32 位int来说太大了。试试double sum = 1;和printf("%f",sum); -
你可以避免调用
pow,通过从前一个幂计算一个幂:a^n = a^(n-1) * a
标签: c for-loop pow multiplication