比对结构体中的成绩,由高到低输出\n\n有n个学生的信息(学号、姓名、成绩),要求按照成绩的高低输出各学生的信息 {{10101,\"zhang\",78},{10103,\"wang\",98.5},{1010
时间: 2023-05-02 11:05:43 浏览: 161
题目要求根据成绩结构体中的结果,由高到低输出
有n个学生的信息(学号、姓名、成绩),要求按照成绩的高低输出各学生的信息 {10101,"zhang",78},{10103,"wang",98.5},{10102,"chen",88},{10115,"zheng",90}
相关问题
定义包含学号姓名成绩的结构体,编写c语言程序读入n个学生成绩信息,并对学生成绩从高到低排序。
可以按照以下步骤编写程序:
1. 定义包含学号、姓名和成绩的结构体。
```c
typedef struct {
int id;
char name[20];
double score;
} Student;
```
2. 读入 n 个学生成绩信息,存储到结构体数组中。
```c
int n;
printf("请输入学生人数:");
scanf("%d", &n);
Student students[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和成绩(用空格隔开):", i + 1);
scanf("%d %s %lf", &students[i].id, students[i].name, &students[i].score);
}
```
3. 对学生成绩从高到低排序。可以使用冒泡排序或快速排序等算法,这里演示冒泡排序的方法。
```c
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j+1].score) {
// 交换两个学生的信息
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
```
4. 输出排序后的学生成绩信息。
```c
printf("按成绩从高到低排序后的学生信息如下:\n");
for (int i = 0; i < n; i++) {
printf("学号:%d,姓名:%s,成绩:%.2lf\n", students[i].id, students[i].name, students[i].score);
}
```
完整代码如下:
```c
#include <stdio.h>
typedef struct {
int id;
char name[20];
double score;
} Student;
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
Student students[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和成绩(用空格隔开):", i + 1);
scanf("%d %s %lf", &students[i].id, students[i].name, &students[i].score);
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j+1].score) {
// 交换两个学生的信息
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
printf("按成绩从高到低排序后的学生信息如下:\n");
for (int i = 0; i < n; i++) {
printf("学号:%d,姓名:%s,成绩:%.2lf\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
有n个结构体变量,内含学生学号,姓名和三门课程的成绩,要去输出平均成绩最高的学生的信息
可以通过遍历所有学生的成绩,计算每个学生的平均成绩并记录最高平均成绩的学生信息,最后输出该学生信息即可。示例代码如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT 100
struct Student {
char id[20]; // 学号
char name[20]; // 姓名
double score1; // 第一门课程成绩
double score2; // 第二门课程成绩
double score3; // 第三门课程成绩
double avg; // 平均成绩
};
int main() {
struct Student students[MAX_STUDENT];
int n, i, max_index;
double max_avg = 0;
printf("请输入学生人数:");
scanf("%d", &n);
// 输入所有学生信息
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%s", students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("第一门课程成绩:");
scanf("%lf", &students[i].score1);
printf("第二门课程成绩:");
scanf("%lf", &students[i].score2);
printf("第三门课程成绩:");
scanf("%lf", &students[i].score3);
// 计算平均成绩
students[i].avg = (students[i].score1 + students[i].score2 + students[i].score3) / 3;
}
// 查找平均成绩最高的学生
for (i = 0; i < n; i++) {
if (students[i].avg > max_avg) {
max_avg = students[i].avg;
max_index = i;
}
}
// 输出平均成绩最高的学生信息
printf("平均成绩最高的学生信息如下:\n");
printf("学号:%s\n", students[max_index].id);
printf("姓名:%s\n", students[max_index].name);
printf("第一门课程成绩:%.2lf\n", students[max_index].score1);
printf("第二门课程成绩:%.2lf\n", students[max_index].score2);
printf("第三门课程成绩:%.2lf\n", students[max_index].score3);
printf("平均成绩:%.2lf\n", students[max_index].avg);
return 0;
}
```
该示例代码定义了一个 `Student` 结构体,包含学生的学号、姓名和三门课程的成绩,以及计算平均成绩的函数。在主函数中,先输入所有学生的信息,并计算每个学生的平均成绩。然后,遍历所有学生的平均成绩,找到最高平均成绩的学生信息,最后输出该学生信息即可。