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

C语言多整数处理优化咨询:14个限定范围输入值的平均值计算

优化C语言输入验证与平均值计算的方案

嘿,这个问题问得很实际!先直接给结论:完全没必要用结构体,用数组才是最适合的方案——既简化循环处理,又避免代码冗余,完美匹配你要做的输入范围验证和批量计算需求。

为什么数组是最优选择?

咱们对比下几种方案的差异:

  • 14个独立int变量:写起来繁琐不说,循环处理根本没法落地,每个变量都要单独写输入和验证逻辑,代码重复度极高,后期维护也麻烦。
  • 结构体:结构体的核心作用是封装不同类型的数据(比如一个用户的姓名、年龄、手机号),你这里全是同类型的整数,用结构体纯属画蛇添足,反而会增加不必要的复杂度。
  • 数组:同类型元素的集合,天然适配循环遍历。不管是输入、范围验证还是求和计算,一行循环就能搞定所有14个元素,代码简洁又高效。

具体实现示例代码

下面是完整的可运行代码,包含输入验证、求和、平均值计算的逻辑:

#include <stdio.h>

int main() {
    // 用常量定义数量,后续要修改个数只改这里就行
    const int TOTAL_NUMBERS = 14;
    int numbers[TOTAL_NUMBERS];
    int sum = 0;
    float average;

    // 循环输入并验证每个值的范围
    for (int i = 0; i < TOTAL_NUMBERS; i++) {
        printf("请输入第%d个整数(范围:-30 到 40):", i + 1);
        scanf("%d", &numbers[i]);

        // 不符合范围就一直要求重新输入
        while (numbers[i] < -30 || numbers[i] > 40) {
            printf("输入不符合要求!请重新输入第%d个整数(范围:-30 到 40):", i + 1);
            scanf("%d", &numbers[i]);
        }

        // 边输入边累加求和,避免后续再遍历一次数组
        sum += numbers[i];
    }

    // 强制转换为float避免整数除法的截断问题
    average = (float)sum / TOTAL_NUMBERS;
    printf("\n14个整数的平均值为:%.2f\n", average);

    return 0;
}

什么时候才需要考虑结构体?

只有当你需要给每个整数附加其他不同类型的信息时,结构体才有意义。比如作业要求记录每个数的输入时间、用户备注等:

#include <time.h>

// 定义结构体封装多类型数据
typedef struct {
    int value;
    // 存储输入时的时间戳(秒)
    time_t input_timestamp;
    // 存储备注信息
    char note[60];
} NumberEntry;

int main() {
    NumberEntry entries[14];
    // 后续可以循环给每个entry赋值value、timestamp和note
    return 0;
}

但就你当前的需求(仅存储14个整数并计算平均值)来说,数组完全足够,没必要引入结构体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:13:46