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

C语言考试备考求助:多数组索引0元素平均值计算问题

问题分析与代码修正

核心问题

你的代码存在两个关键错误:

  1. 误解题目要求:题目说的是多个输入数组的每个数组的索引0元素,但你把所有输入数据存到了单个一维数组中,并且avg_km函数只取了这个数组的第一个元素求平均,结果等同于直接返回该元素,完全不符合需求。
  2. 代码规范问题:#define MAX放在函数内部是不规范的写法,宏定义属于预编译指令,应放在函数外部全局区域。

修正后的代码

#include <stdio.h>
#define MAX 1000

// 计算数组中所有元素的平均值(此时数组存储的是各个输入数组的索引0元素)
float avg_km(int arr[], int count) {
    if (count == 0) {
        return 0.0f; // 处理空输入,避免除以0
    }
    int sum = 0;
    for (int i = 0; i < count; i++) {
        sum += arr[i];
    }
    return (float)sum / count;
}

void test_worldcup() {
    int first_elements[MAX]; // 存储所有输入数组的索引0元素
    int count = 0;
    int num;

    // 读取每行的第一个整数(即每个数组的索引0元素),跳过该行其余内容
    while (scanf("%d", &num) == 1) {
        first_elements[count++] = num;
        // 清除当前行剩余的输入内容
        while (getchar() != '\n' && !feof(stdin));
    }

    float avg = avg_km(first_elements, count);
    printf("%.2f\n", avg);
}

int main() {
    test_worldcup();
    return 0;
}

修正说明

  1. 输入处理逻辑:test_worldcup现在会读取每行的第一个整数(每个数组的索引0元素),跳过该行后续的所有内容,确保收集到的是每个独立数组的首元素。
  2. avg_km函数简化:现在该函数接收存储所有首元素的数组和元素个数,直接计算平均值,逻辑清晰且符合题目要求。
  3. 边界处理:增加了空输入的判断,避免出现除以0的运行时错误。
  4. 代码规范:把MAX宏定义移到全局区域,符合C语言编码规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:05:33