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
相关产品推荐
相关产品推荐

