/*
25.学生的记录由学号、数学和C语言成绩(用整数表示)组成,输入N名学生的数据(N值由符号常量确定),统计C语言分数最高的学生的人数(注意:分数最高的学生可能不只一个),并输出C语言分数最高的学生人数及其各项数据。
要求输入、输出时,应显示适当的提示信息。
*/
/*
1 11 11
2 22 22
3 33 33
4 44 33
5 55 33
*/
/*
这个写法其实很笨,效率很低,
可以先一遍循环找到最大值,然后第二遍循环判断是否和最大值相等,相等就输出
或者第一遍找最大值的时候同时用一个数组记录stu的下标
但是结果对的就行,笨就笨吧,谁让考的c语言又不是算法(dog)
*/
#include <stdio.h>
#define N 5
struct _student {
int id;
int math;
int clanguage;
}stu[N];
int main() {
int i, j;
printf("输入5名学生的数据(学号,数字,c语言成绩:\n");
for (i = 0; i < N; ++i) {
scanf("%d%d%d", &stu[i].id, &stu[i].math, &stu[i].clanguage);
}
for (i = 0; i < N - 1; ++i) {
for (j = 0; j < N - i - 1; ++j) {
if (stu[j].clanguage > stu[j + 1].clanguage) {
struct _student temp;
memcpy(&temp, &stu[j], sizeof(struct _student));
memcpy(&stu[j], &stu[j + 1], sizeof(struct _student));
memcpy(&stu[j + 1], &temp, sizeof(struct _student));
}
}
}
printf("c语言成绩最高的几个学生个人信息如下:\n");
for (i = N - 1; i >= 0; --i) {
if (stu[i].clanguage != stu[N - 1].clanguage) break;
printf("id=%d, math=%d, c=%d\n", stu[i].id, stu[i].math, stu[i].clanguage);
}
return 0;
}
2019年25.学生的记录由学号、数学和C语言成绩(用整数表示)组成,输入N名学生的数据(N值由符号常量确定),统计C语言分数最高的学生的人数(注意:分数最高的学生可能不只一个),并输出
最新推荐文章于 2024-11-07 12:47:29 发布