定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语的任意一个.
#include <stdio.h>
typedef struct student{
char name[6];
int number;
int yuwen;
int shuxue;
int yingyu;
}STU;
void student_shuru(STU *stu);
void student_yuwen(STU *stu);
void student_shuxue(STU *stu);
void student_yingyu(STU *stu);
void student_shuchu(STU *stu);
int main(int argc, const char *argv[])
{
struct student stu[6];
int i=0;
printf("请输入学生的信息:\n");
printf("姓名 学号 语文 数学 英语\n");
student_shuru(stu);
printf("1.查询语文成绩排名\n");
printf("2.查询数学成绩排名\n");
printf("3.查询英语成绩排名\n");
scanf("%d",&i);
putchar(10);
switch(i){
case 1:
student_yuwen(stu);
printf("学生的语文成绩排序:\n");
student_shuchu(stu);
break;
case 2:
student_shuxue(stu);
printf("学生的数学成绩排序:\n");
student_shuchu(stu);
break;
case 3:
student_yingyu(stu);
printf("学生的英语成绩排序:\n");
student_shuchu(stu);
break;
default:
printf("输入错误\n");
break;
}
putchar(10);
return 0;
}
void student_shuru(STU *stu){
for(int i=0;i<6;i++){
scanf("%s %d %d %d %d",stu[i].name,&stu[i].number,&stu[i].yuwen,&stu[i].shuxue,&stu[i].yingyu);
}
}
void student_yuwen(STU *stu){
struct student temp={0};
for(int i=1;i<6;i++){
for(int j=0;j<6-i;j++){
if(stu[j].yuwen<=stu[j+1].yuwen){
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}
void student_shuxue(STU *stu){
struct student temp={0};
for(int i=1;i<6;i++){
for(int j=0;j<6-i;j++){
if(stu[j].shuxue<=stu[j+1].shuxue){
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}
void student_yingyu(STU *stu){
struct student temp={0};
for(int i=1;i<6;i++){
for(int j=0;j<6-i;j++){
if(stu[j].yingyu<=stu[j+1].yingyu){
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}
void student_shuchu(STU *stu){
for(int i=0;i<6;i++){
printf("%s %d %d %d %d\n",stu[i].name,stu[i].number,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu);
}
}
运行结果:
ubuntu@ubuntu:~$ cd test/
ubuntu@ubuntu:test$ vi 1t.c
ubuntu@ubuntu:test$ gcc 1t.c
ubuntu@ubuntu:test$ ./a.out
请输入学生的信息:
姓名 学号 语文 数学 英语
小德 13 127 136 118
小梦 09 150 124 146
小雨 06 136 143 150
小空 27 113 121 125
小姚 01 141 150 149
小宫 16 119 123 138
1.查询语文成绩排名
2.查询数学成绩排名
3.查询英语成绩排名
1
学生的语文成绩排序:
小梦 9 150 124 146
小姚 1 141 150 149
小雨 6 136 143 150
小德 13 127 136 118
小宫 16 119 123 138
小空 27 113 121 125
ubuntu@ubuntu:test$ ./a.out
请输入学生的信息:
姓名 学号 语文 数学 英语
小德 13 127 136 118
小梦 09 150 124 146
小雨 06 136 143 150
小空 27 113 121 125
小姚 01 141 150 149
小宫 16 119 123 138
1.查询语文成绩排名
2.查询数学成绩排名
3.查询英语成绩排名
2
学生的数学成绩排序:
小姚 1 141 150 149
小雨 6 136 143 150
小德 13 127 136 118
小梦 9 150 124 146
小宫 16 119 123 138
小空 27 113 121 125
ubuntu@ubuntu:test$ ./a.out
请输入学生的信息:
姓名 学号 语文 数学 英语
小德 13 127 136 118
小梦 09 150 124 146
小雨 06 136 143 150
小空 27 113 121 125
小姚 01 141 150 149
小宫 16 119 123 138
1.查询语文成绩排名
2.查询数学成绩排名
3.查询英语成绩排名
3
学生的英语成绩排序:
小雨 6 136 143 150
小姚 1 141 150 149
小梦 9 150 124 146
小宫 16 119 123 138
小空 27 113 121 125
小德 13 127 136 118
ubuntu@ubuntu:test$