大个仔
回答者
回答于 2026-10-24
在C语言中,可通过定义数组、循环读取输入和累加求和来实现该功能。
参考代码
#include <stdio.h>
int main() {
float scores[10];
float sum = 0.0f;
float average;
printf("请输入10名学生的成绩:\n");
for (int i = 0; i < 10; i++) {
scanf("%f", &scores[i]);
sum += scores[i];
}
average = sum / 10;
printf("班级平均分为:%.2f\n", average);
return 0;
}
实现步骤
- 引入头文件:包含
<stdio.h>以使用printf和scanf函数。 - 定义变量:声明长度为10的浮点型数组
scores用于存储成绩,声明sum初始化为0用于累加,声明average用于存储结果。 - 循环输入:使用
for循环遍历10次,每次调用scanf("%f", &scores[i])从键盘读取一个浮点数存入数组对应位置,同时将其累加到sum。 - 计算与输出:将
sum除以10得到平均分,使用printf配合%.2f格式化输出保留两位小数的结果。
判断依据
- 选择
float或double类型是因为学生成绩可能包含小数,且除法运算会产生浮点结果。若使用整型变量存储总分或平均分,会导致小数部分被截断丢失精度。 - 数组大小固定为10,与题目要求的班级人数一致,索引范围为0至9。
适用条件
- 适用于人数固定的场景。若实际应用中人数不固定,可先通过键盘输入获取人数,再动态分配内存或使用变长数组(C99标准支持)。
- 输入数据应为合法的数值格式。
常见误区
- 整数除法截断:若
sum定义为int类型,表达式sum / 10会执行整数除法,直接丢弃小数部分。应确保参与除法的至少一个操作数为浮点类型。 - 数组越界:循环条件误写为
i <= 10会导致访问scores[10],超出数组合法索引范围,引发未定义行为。 - 未校验输入:
scanf返回成功读取的项目数,若用户输入非数字字符,scanf会失败且不会消耗缓冲区中的错误字符,导致后续循环陷入死循环或读取脏数据。严谨的做法是检查scanf的返回值。