要求输入某班10个学生的信息(包括学号、姓名、性别、成绩),要求按成绩由高到低输出该班学生信息。 分析:问题的分解: 1)定义学生信息的结构体类型; 2)定义结构体类型数组变量; 3)编写学生信息输入函数; 4)编写学生信息输出函数; 5)编写按照学生成绩排序函数;(要求排序算法为选择排序和冒泡排序两种) 编写主函数对子函数进行函数调用,实现功能。
时间: 2024-02-25 14:56:20 浏览: 62
好的,我可以帮你解答这个问题。
首先,我们需要定义一个学生信息的结构体类型,包括学号、姓名、性别和成绩。代码如下:
```c
struct Student {
int id; // 学号
char name[20]; // 姓名
char gender; // 性别
float score; // 成绩
};
```
接下来,我们需要定义一个结构体类型数组变量,用于存储学生信息。代码如下:
```c
struct Student stu[10];
```
然后,我们需要编写一个学生信息输入函数,用于输入学生信息。代码如下:
```c
void input(struct Student *stu) {
int i;
for (i = 0; i < 10; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
printf("性别:");
scanf(" %c", &stu[i].gender);
printf("成绩:");
scanf("%f", &stu[i].score);
}
}
```
接着,我们需要编写一个学生信息输出函数,用于输出学生信息。代码如下:
```c
void output(struct Student *stu) {
int i;
printf("按成绩由高到低输出该班学生信息:\n");
printf("学号\t姓名\t性别\t成绩\n");
for (i = 0; i < 10; i++) {
printf("%d\t%s\t%c\t%.1f\n", stu[i].id, stu[i].name, stu[i].gender, stu[i].score);
}
}
```
然后,我们需要编写一个按照学生成绩排序的函数,要求排序算法为选择排序和冒泡排序两种。代码如下:
```c
void selection_sort(struct Student *stu) {
int i, j, max;
struct Student temp;
for (i = 0; i < 9; i++) {
max = i;
for (j = i + 1; j < 10; j++) {
if (stu[j].score > stu[max].score) {
max = j;
}
}
if (max != i) {
temp = stu[i];
stu[i] = stu[max];
stu[max] = temp;
}
}
}
void bubble_sort(struct Student *stu) {
int i, j;
struct Student temp;
for (i = 0; i < 9; i++) {
for (j = 0; j < 9 - i; j++) {
if (stu[j].score < stu[j + 1].score) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}
```
最后,我们需要在主函数中对子函数进行函数调用,实现功能。代码如下:
```c
int main() {
input(stu);
selection_sort(stu); // 使用选择排序算法进行排序
output(stu);
bubble_sort(stu); // 使用冒泡排序算法进行排序
output(stu);
return 0;
}
```
这样,就实现了按成绩由高到低输出该班学生信息的功能。
阅读全文