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

C语言程序计算整数平均值无法输出十进制小数问题求助

问题分析与解决方法

你的程序输出整数而非小数的核心原因有两个:

  1. avg函数返回类型错误:函数声明为返回int,即便内部用double计算出带小数的平均值,返回时会被强制截断为整数,直接丢失小数部分。
  2. printf格式符不匹配:使用%d格式符会按整数类型解析输出值,就算返回值是正确的浮点数,也会输出错误结果。

修改方案(不改动main函数内的变量类型)

只需调整两处:

  • 将avg函数的返回类型从int改为double
  • 将main函数中printf的格式符从%d改为%f(或%.1f等控制小数位数)

修改后的完整代码

int main (){

    int measurements[10];
    int nrOfMeasurements = 0;
    char ch;

    while(1){
        printf("\nView(v)Enter(e)Compute(c):");
        scanf(" %c", &ch);
        switch(ch){
              case 'c':printf("Avg:%f\n", avg(measurements,nrOfMeasurements));
                       break; 
              }
      }
}

double avg(int a[], int n){

    int i;
    double sum=0,avg;
    for(i=0;i<n;i++){
        sum += a[i];
    }
    avg=sum/n;
    return avg;
}

补充说明

你之前把sum和avg改为double的思路是对的,但因为没修改函数返回类型,导致计算结果被截断,所以看不到小数。如果需要控制输出的小数位数(比如保留1位小数),可以把%f改成%.1f,这样3.7就会精准显示,而非默认的多位小数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:42:51