定义一个包含10个学生基本情况(包括学号、姓名、C语言成绩)的结构体数组,编程实现下列功能:输入10个学生的学号、姓名、C语言成绩;求出平均成绩,按照学生的C语言成绩从高到低进行排序。
时间: 2023-06-18 10:04:47 浏览: 101
结构体数组的应用-C语言入门教程
下面是一个实现上述功能的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 10
struct student {
char id[10];
char name[20];
float c_score;
};
void input_students(struct student *students, int n) {
int i;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和C语言成绩:", i+1);
scanf("%s %s %f", students[i].id, students[i].name, &students[i].c_score);
}
}
void sort_students(struct student *students, int n) {
int i, j;
struct student temp;
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (students[i].c_score < students[j].c_score) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
float average_score(struct student *students, int n) {
int i;
float sum = 0.0;
for (i = 0; i < n; i++) {
sum += students[i].c_score;
}
return sum / n;
}
void print_students(struct student *students, int n) {
int i;
printf("学生信息如下:\n");
for (i = 0; i < n; i++) {
printf("%s\t%s\t%.1f\n", students[i].id, students[i].name, students[i].c_score);
}
}
int main() {
struct student students[MAX_STUDENTS];
input_students(students, MAX_STUDENTS);
sort_students(students, MAX_STUDENTS);
print_students(students, MAX_STUDENTS);
printf("平均成绩:%.1f\n", average_score(students, MAX_STUDENTS));
return 0;
}
```
程序首先定义了一个结构体 `student`,包含学号、姓名和C语言成绩。然后定义了一个包含10个 `student` 结构体的数组 `students`。
`input_students` 函数用于输入学生信息,通过循环遍历 `students` 数组,依次输入每个学生的信息。
`sort_students` 函数用于按照学生的C语言成绩从高到低进行排序,通过两层循环遍历 `students` 数组,比较相邻的两个学生的C语言成绩,如果前一个学生的C语言成绩比后一个学生的C语言成绩低,则交换两个学生的位置。
`average_score` 函数用于计算平均成绩,通过循环遍历 `students` 数组,累加每个学生的C语言成绩,最后除以学生人数得到平均成绩。
`print_students` 函数用于输出学生信息,通过循环遍历 `students` 数组,依次输出每个学生的学号、姓名和C语言成绩。
在 `main` 函数中,首先调用 `input_students` 函数输入学生信息,然后调用 `sort_students` 函数按照C语言成绩从高到低排序,再调用 `print_students` 函数输出学生信息,最后调用 `average_score` 函数计算平均成绩并输出。
阅读全文