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

C语言实现剔除最值求5个数平均值返回错误结果原因排查

问题原因分析
  • 直接导致结果错误的核心问题:sum变量未初始化,且第一个输入的table[1]没有被加入sum统计。你当前的逻辑里只有循环内输入的4个值被加到了sum中,第一个输入值被完全遗漏。以示例输入1、2、3、4、5为例,sum仅统计了2+3+4+5=14,减去最大值5、最小值1后得到8,除以3自然得到2.666667的错误结果。
  • 潜在风险问题:C语言数组索引从0开始,你定义的float table[size]合法下标范围是04,代码中使用下标15会导致数组越界访问table[5],属于未定义行为,可能引发乱码、程序崩溃等异常。
  • 规范问题:main函数未按照C标准声明为int main(),缺少返回值,属于旧C标准的不规范写法。
修正后代码
#include <stdio.h> 

#define SIZE 5 // 宏名默认使用大写和普通变量做区分

int main() {
  int i;
  float table[SIZE], max, min, mo, sum = 0; // 初始化sum为0

  printf("Provide a number: ");
  scanf("%f", &table[0]); // 从数组合法起始下标0开始存储
  max = table[0];
  min = table[0];
  sum = table[0]; // 第一个输入值加入总和统计

  for (i = 1; i < SIZE; i++) { // 循环到下标4为止,避免数组越界
    printf("Provide a number: ");
    scanf("%f", &table[i]);

    if (max <= table[i])
      max = table[i];
    if (min >= table[i]) {
      min = table[i];
    }
    sum = sum + table[i];
  }

  mo = (sum - max - min) / (SIZE - 2);
  printf("The average number is: %f", mo);
  return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:01