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

不使用pow()计算1≤i≤10时(x+y)^(i²-i+1)求和的C代码调试

错误点梳理
  • 未每次循环重置temp变量:当前代码temp仅在for循环外初始化一次,每次计算完i对应次方后,temp会保留上一轮的计算结果,下一轮循环会在上一轮结果的基础上继续乘base,导致计算值完全偏离预期。
  • 次方计算逻辑错误:要计算base^exp,如果初始temp赋值为base,再循环exp次乘base,最终得到的是base^(exp+1),多乘了一次base。
修正方案
  1. 每次进入i的循环时,先将temp重置为1
  2. 次方计算逻辑调整为:初始temp=1,循环exp次乘base,即可得到正确的base^exp结果
修正后完整代码
#include <stdio.h>
#include <math.h>

double double_bitxy (double x, double y)
{
    double base = x + y;
    double result = 0;
    for (int i = 1; i <= 10; i++) {
        int exp = i * i - i + 1;
        double temp = 1;
        while (exp != 0) {
            temp *= base;
            exp--;
        }
        result += temp;
    }
    return result;
}

int main()
{
    double x, y;
    printf("enter x\n");
    scanf("%lf", &x);
    printf("enter y\n");
    scanf("%lf", &y);

    double sum = double_bitxy(x, y);
    printf("%.3lf", sum);
    return 0;
}
验证说明

测试输入x=0.25、y=0.5时,base为0.75,累加计算后保留三位小数结果为1.331,和预期结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:06:08