说明网
电脑网络 1 个回答

如何用C语言编写程序,通过键盘输入10名学生的成绩并计算班级平均分?

一切都好说 提问者

发布于 2026-10-24

问题补充

使用C语言实现该功能,需定义数组存储10名学生成绩,通过循环结合scanf函数读取键盘输入,累加求和后除以人数得到平均分并输出。

1 个回答

按发布时间排序
大个仔 回答者

回答于 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;
}

实现步骤

  1. 引入头文件:包含<stdio.h>以使用printf和scanf函数。
  2. 定义变量:声明长度为10的浮点型数组scores用于存储成绩,声明sum初始化为0用于累加,声明average用于存储结果。
  3. 循环输入:使用for循环遍历10次,每次调用scanf("%f", &scores[i])从键盘读取一个浮点数存入数组对应位置,同时将其累加到sum。
  4. 计算与输出:将sum除以10得到平均分,使用printf配合%.2f格式化输出保留两位小数的结果。

判断依据

  • 选择float或double类型是因为学生成绩可能包含小数,且除法运算会产生浮点结果。若使用整型变量存储总分或平均分,会导致小数部分被截断丢失精度。
  • 数组大小固定为10,与题目要求的班级人数一致,索引范围为0至9。

适用条件

  • 适用于人数固定的场景。若实际应用中人数不固定,可先通过键盘输入获取人数,再动态分配内存或使用变长数组(C99标准支持)。
  • 输入数据应为合法的数值格式。

常见误区

  1. 整数除法截断:若sum定义为int类型,表达式sum / 10会执行整数除法,直接丢弃小数部分。应确保参与除法的至少一个操作数为浮点类型。
  2. 数组越界:循环条件误写为i <= 10会导致访问scores[10],超出数组合法索引范围,引发未定义行为。
  3. 未校验输入:scanf返回成功读取的项目数,若用户输入非数字字符,scanf会失败且不会消耗缓冲区中的错误字符,导致后续循环陷入死循环或读取脏数据。严谨的做法是检查scanf的返回值。

内容由网友提供,仅供参考。