C语言成绩统计:15名学生的数据分析

张开发
2026/4/6 21:26:48 15 分钟阅读

分享文章

C语言成绩统计:15名学生的数据分析
输入15名学生的C语言成绩统计输出该课程的平均成绩最高分和最低分并统计及格人数。#include stdio.hint main(){int scores[15],i,sum0,max,min,pass0;float average;printf(请输入15个学生的C语言成绩\n);for (i 0; i 15; i){printf(第%d个学生成绩, i 1);scanf(%d, scores[i]);while(scores[i] 0 || scores[i] 100){printf(成绩输入有误请重新输入第%d名学生成绩0-100\n, i 1);scanf(%d, scores[i]);}}max scores[0];min scores[0];for (i 0; i 15; i){sum scores[i];if(scores[i] max){max scores[i];}if(scores[i] min){min scores[i];}if(scores[i] 60){pass;}}average (float)sum / 15;printf(\n 成绩统计结果: \n);printf(平均成绩%.2f\n, average);printf(最高分%d\n, max);printf(最低分%d\n, min);printf(及格人数%d\n, pass);return 0;}这段代码是一个非常标准的C语言入门程序主要目的是处理一组数据15个学生的成绩并进行统计分析。为了让你更直观地理解我们可以把这段代码想象成一个“班级成绩统计员”的工作流程。它的工作分为四个主要阶段准备阶段、录入与检查阶段、计算阶段和汇报阶段。下面我为你逐行详细解析️ 第一阶段准备工具变量定义int scores[15]这是核心工具。你可以把它想象成一个有15个格子的储物柜专门用来存放15个学生的成绩。sum0这是一个累加器用来算总分。注意这里必须初始化为0否则计算结果会是乱码垃圾值。pass0这是一个计数器用来记录及格的人数同样初始化为0。max, min这两个变量是用来存放“最高分”和“最低分”的暂时还没赋值。float average用来存放平均分。因为平均分很可能有小数所以用了浮点型float。 第二阶段录入与安检输入循环for循环这是程序的“流水线”。它让电脑重复做同一件事15次从第0个格子到第14个格子。scanf负责把键盘输入的数字装进scores[i]这个格子里。while循环亮点这是一个“安检机制”。如果输入的成绩小于0或者大于100比如你不小心输了105程序就会卡在这里一直让你重新输入直到输入正确的数字为止。这大大提高了程序的健壮性。 第三阶段核心计算统计逻辑初始化max和min代码把max和min都先设为第一个学生的成绩scores[0]。这是一种很安全的做法。如果不这么做万一你把max初始化为0而所有学生都考了负分虽然这里限制了0-100结果就会出错。sum scores[i]这是 shorthand简写等于sum sum scores[i]把每个格子里的分数加起来。比大小程序拿着当前的成绩去和目前的“擂主”max或min比。如果当前的比max还大那它就成为新的max。如果当前的比min还小那它就成为新的min。pass只要分数大于等于60计数器就加1。 第四阶段汇报结果输出(float)sum这是一个非常关键的细节在C语言中整数除以整数sum / 15结果还是整数例如 135/159但 136/15 也会变成 9小数部分会被直接丢弃。加上(float)是强制类型转换告诉电脑“请把 sum 当成小数来计算”。这样136 / 15才能得到9.066...这样的精确结果。%.2f这是格式化输出意思是“保留小数点后两位”。这段代码写得很规范主要优点在于输入有验证使用了while循环防止用户输入离谱的分数如 120 分或 -5 分。逻辑清晰输入、计算、输出分块明确。细节处理到位使用了(float)强制转换来保证平均分的精度且sum和pass都正确初始化了。这是一个非常经典的数组与循环配合使用的案例也是学习C语言数据处理的基础模版。

更多文章