C语言成绩统计:15名学生的数据分析
输入15名学生的C语言成绩,统计输出该课程的平均成绩,最高分和最低分并统计及格人数。


#include <stdio.h>
int main()
{
int scores[15],i,sum=0,max,min,pass=0;
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个学生的成绩。 -
sum=0:这是一个累加器,用来算总分。注意:这里必须初始化为0,否则计算结果会是乱码(垃圾值)。 -
pass=0:这是一个计数器,用来记录及格的人数,同样初始化为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/15=9,但 136/15 也会变成 9,小数部分会被直接丢弃)。 -
加上
(float)是强制类型转换,告诉电脑:“请把 sum 当成小数来计算”。这样136 / 15才能得到9.066...这样的精确结果。
-
-
%.2f:这是格式化输出,意思是“保留小数点后两位”。
这段代码写得很规范,主要优点在于:
-
输入有验证:使用了
while循环防止用户输入离谱的分数(如 120 分或 -5 分)。 -
逻辑清晰:输入、计算、输出分块明确。
-
细节处理到位:使用了
(float)强制转换来保证平均分的精度,且sum和pass都正确初始化了。
这是一个非常经典的数组与循环配合使用的案例,也是学习C语言数据处理的基础模版。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)