You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的求自然数d次幂和的C语言代码结果不正确?

代码错误分析与修正

你的代码运行结果不正确的核心原因有两个:

  • 累加变量被重复重置:在sum函数的循环内部,每次迭代都执行sum=0;,这会把之前的累加结果全部清空,导致最终只计算了最后一个自然数的d次幂,而非前n个数的幂次总和。比如测试用例n=3、d=2时,循环到i=3时sum被重置为0,加上9后返回9,但正确结果应该是1+4+9=14。
  • 变量未初始化:float sum;没有显式初始化为0,虽然后续循环里的重置会覆盖这个问题,但这是不规范的写法,可能导致未定义行为。

修正后的代码

#include<stdio.h>
#include<math.h>

float sum(int n ,int d);

int main(){
   int n=3,d=2;
   printf("sum=%f\n",sum(3,2));
   return 0;
}

float sum(int n ,int d){
   float sum = 0; // 初始化累加变量为0
   for(int i=1;i<=n;i++){
    sum += pow(i, d); // 直接累加,不再重置sum
   }
   return sum;
}

额外说明

pow函数返回的是double类型,赋值给float可能存在精度损失。如果需要更高计算精度,可以将sum的类型改为double,同时printf的格式符改为%lf。

内容的提问来源于stack exchange,提问作者Praveeniitkgp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:41:33