文章目录
- 在C语言中管理学生成绩:录入、排序和分析
- 题目一
- 题目二
在C语言中管理学生成绩:录入、排序和分析
题目一
- 录入N名同学成绩,找到成绩的最大值,最小值,平均值,并判断哪些同学在平均值之下。
- 输入要求:
- 输入学生人数N。
- 依次输入每个学生的成绩。
- 输出要求:
- 显示所有学生的平均成绩、最大成绩和最小成绩。
- 显示成绩在平均值之下的学生编号。
#include <stdio.h>int main() {int N; // 学生人数printf("请输入学生人数:");scanf("%d", &N); // 从键盘读取学生人数int scores[N]; // 创建一个数组来存储每个学生的成绩int max = 0, min = 100, sum = 0; // 初始化最大值、最小值和总和float average; // 用于存储平均值// 循环录入每个学生的成绩for (int i = 0; i < N; i++) {printf("输入%d号学生成绩为:", i + 1);scanf("%d", &scores[i]); // 读取每个学生的成绩sum += scores[i]; // 累加每个学生的成绩以计算总和if (i == 0 || scores[i] > max) max = scores[i]; // 更新最大值if (scores[i] < min) min = scores[i]; // 更新最小值}// 计算平均值average = (float)sum / N;// 输出平均值、最大值和最小值printf("(1)%d名同学平均值为:%.1f,最大值为:%d,最小值为:%d\n", N, average, max, min);// 判断哪些同学在平均值之下printf("成绩在平均值之下的同学:");for (int i = 0; i < N; i++) {if (scores[i] < average) { // 如果学生成绩小于平均值printf("%d号同学 ", i + 1); // 输出该学生的编号}}printf("\n");return 0;
}
题目二
- 对N名同学的成绩进行排序,要求输出前三名学生成绩。
- 输入要求:
- 输入学生人数N。
- 依次输入每个学生的成绩。
- 输出要求:
- 显示排序后成绩前三名的学生编号和成绩。
- 输出要求:
(1)5名同学平均值为: ,最大值为:91,最小值为55:
(2)第1名为4号同学,成绩为:92;第2名为1号同学,成绩为:89;第3名为5号同学,成绩为:89;
好的,我将提供一个从键盘输入学生成绩,并进行排序以输出前三名学生成绩的C语言程序。这次我会添加详细的注释来解释每一步。
#include <stdio.h>int main() {int N; // 学生人数printf("请输入学生人数:");scanf("%d", &N); // 从键盘读取学生人数int scores[N]; // 创建一个数组来存储每个学生的成绩int i, j, temp; // 循环变量i和j,以及用于交换的临时变量temp// 循环录入每个学生的成绩for (i = 0; i < N; i++) {printf("输入%d号学生成绩为:", i + 1);scanf("%d", &scores[i]); // 读取每个学生的成绩}// 使用冒泡排序算法对成绩进行排序for (i = 0; i < N - 1; i++) {for (j = 0; j < N - i - 1; j++) {if (scores[j] < scores[j + 1]) { // 如果当前成绩小于下一个成绩// 交换成绩temp = scores[j];scores[j] = scores[j + 1];scores[j + 1] = temp;}}}// 输出前三名学生的成绩printf("(2)第1名为%d号同学,成绩为:%d;第2名为%d号同学,成绩为:%d;第3名为%d号同学,成绩为:%d;\n",1 + (N - 1), scores[N - 1], // 第一名1 + (N - 2), scores[N - 2], // 第二名1 + (N - 3), scores[N - 3]); // 第三名return 0;
}
-
变量声明:
N
:存储学生人数。scores[N]
:数组,用于存储每个学生的成绩。i
,j
,temp
:用于循环和交换的变量。
-
输入学生人数:
- 通过
scanf
从键盘读取学生人数。
- 通过
-
录入成绩:
- 使用
for
循环,通过scanf
从键盘读取每个学生的成绩,并存储在scores
数组中。
- 使用
-
排序成绩:
- 使用冒泡排序算法对
scores
数组进行排序。 - 外层循环控制排序的总轮数,内层循环进行相邻元素的比较和交换。
- 使用冒泡排序算法对
-
输出前三名学生的成绩:
- 由于数组索引从0开始,所以前三名的索引分别是
N-1
,N-2
,N-3
。 - 输出前三名学生的编号(加1以符合常规的从1开始的编号)和成绩。
- 由于数组索引从0开始,所以前三名的索引分别是