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

C语言中printf输出folgenglied函数结果始终为0的问题排查

问题原因及解决办法

你的问题出在整数除法上:

  • 在C语言中,两个整数做除法时,结果会自动舍弃小数部分取整。你的folgenglied函数里,1和n+2都是整数类型,只要n+2 > 1,1/(n+2)的结果就会被截断为0,比如1/3得0、1/2也得0。

解决步骤

要得到正确的浮点计算结果,需要做以下修改:

  1. 调整函数返回值与变量类型
    把folgenglied的返回类型从int改为double(或float),同时将函数内的变量x也改为浮点类型。
  2. 触发浮点除法运算
    把常量1改成1.0,让编译器识别为浮点常量,这样除法会按浮点规则计算,保留小数部分。
  3. 匹配主函数的变量与输出格式
    主函数里的m要对应改为double类型,printf的格式符从%d(整数格式)换成%lf(对应double类型)。

修改后的完整代码

#include <stdio.h>

double folgenglied(int);

int main(){
    int n;
    double m;
    printf("Type a number in\n");
    scanf("%d", &n);
    m = folgenglied(n);
    printf("%lf ist the Folgenglied", m);
}

double folgenglied(int n) {
    double x;
    x = 1.0 / (n + 2);
    return x;
}

注:原代码中printf("Type a number in\n");的换行符位置错误,已在修改后的代码中修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:25:36