C语言编程,定义包含学号、姓名和成绩的学生信息结构类型,完成以下功能:

(1)键盘输入n个学生信息数据(n从键盘输入);
(2)使用“冒泡法”对学生成绩由高到低排序;
(3)输出排序后学生信息。

输入输出样例如下,数据间以空格分隔。
输入:
3
100001 wang-li 91
100002 chen-da-wei 95
100003 guo-tao 93
输出为:
100002 chen-da-wei 95
100003 guo-tao 93
100001 wang-li 91
请给出运算结果

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

#define MAX 50

typedef struct {
char stuId[10];
char name[20];
int score;
}Student;

void input(Student students[MAX], int n)
{
int i;

for (i = 0; i < n; i++) {
scanf("%s", students[i].stuId);
scanf("%s", students[i].name);
scanf("%d", &students[i].score);
}
}

void sort(Student students[MAX], int n)
{
int i, j;

Student temp;

for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
memcpy(&temp, &students[j], sizeof(Student));
memcpy(&students[j], &students[j + 1], sizeof(Student));
memcpy(&students[j + 1], &temp, sizeof(Student));
}
}
}
}

void print(Student students[MAX], int n)
{
int i;

for (i = 0; i < n; i++) {
printf("%s %s %d\n", students[i].stuId, students[i].name, students[i].score);
}
}



int main()
{
Student students[MAX];

int n;

scanf("%d", &n);

input(students, n);

sort(students, n);

printf("输出:\n");

print(students, n);

system("pause");
return 0;
}

运行结果:

温馨提示:答案为网友推荐,仅供参考