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

C语言for循环用int正常,改用double后失效问题求助

问题分析与修复

核心问题点

  • main函数返回类型错误:C语言标准规定main函数的返回类型必须是int,使用double会触发未定义行为,可能导致程序异常。
  • scanf格式符不匹配:读取double类型变量时,必须使用%lf格式符,而不是%f(%f用于读取float类型)。格式符不匹配会导致num被错误赋值,比如输入的数值被解析为极小值,直接让循环条件i < num不成立,循环被跳过。
  • 求和逻辑错误:初始result = 1,循环从i=1开始,会重复累加1/1,正确的求和逻辑应该是:要么初始result=0,循环从i=1到i<=num;要么初始result=1,循环从i=2到i<=num。

修正后的代码

#include <stdio.h>

int main(){
    double num, result = 0;
  
    printf("Input a number: ");
    scanf("%lf", &num);

    for (double i = 1; i <= num; i++)
    {
        result += 1/i;
    }

    printf("Result: %f", result);    

    return 0;
}

额外说明

如果坚持初始result=1,可以把循环改成从i=2开始:

// 部分代码修改
double num, result = 1;
// ...
for (double i = 2; i <= num; i++)
{
    result += 1/i;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:04:51