代码如下:
/*定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,、 定义结构体数组存放不同学生的信息,可以在终端录入学生的信息, 可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语的任意一个*/ #include<stdio.h> #include<string.h> struct chx{ char name[128]; int sno ; int chinese; int math; int english }chx[99]; int main() { int a =0 ; int aa = 0; int az = 0; char t[120]; while(1){ struct chx temp = {NULL}; printf("选择服务\n1.录入学生信息\n2.按照语文排序\n3.按照数学排序\n4.按照英语排序\n5.打印输出\n0.退出\n"); scanf("%d",&a); switch(a){ case 1:{ printf("输入学生录入个数\n"); scanf("%d",&aa); for(int i=0;i<aa;i++){ printf("输入第%d个学生的学号\n",i+1); scanf("%d",&az); chx[i].sno = az; printf("输入第%d个学生的姓名\n",i+1); //char ch[100] ; gets(chx[i].name); gets(chx[i].name); printf("输入第%d个学生的语文成绩\n",i+1); scanf("%d",&az); chx[i].chinese = az; printf("输入第%d个学生的数学成绩\n",i+1); scanf("%d",&az); chx[i].math = az; printf("输入第%d个学生的英语成绩\n",i+1); scanf("%d",&az); chx[i].english = az; } break; } case 2:{ for(int i=0;i<aa;i++){ for(int j=0;j<aa;j++){ if(chx[j].chinese<chx[j+1].chinese){ temp.sno = chx[j].sno; chx[j].sno = chx[j+1].sno; chx[j+1].sno = temp.sno; strcpy(temp.name,chx[j+1].name ); strcpy(chx[j+1].name,chx[j].name ); strcpy(chx[j].name,temp.name ); temp.chinese = chx[j].chinese; chx[j].chinese = chx[j+1].chinese; chx[j+1].chinese = temp.chinese; temp.math = chx[j].math; chx[j].math = chx[j+1].math; chx[j+1].math = temp.math; temp.english = chx[j].english; chx[j].english = chx[j+1].english; chx[j+1].english = temp.english; /* printf("第%d个学生的学号是%d 姓名是%s 语文成绩是%d 数学成绩是%d 英语成绩是%d\n", j+1,chx[j].sno,chx[j].name,chx[j].chinese,chx[j].math,chx[j].english);*/ } struct chx temp = {NULL}; } } break; } case 3:{ for(int i=1;i<aa;i++){ for(int j=0;j<aa-i;j++){ if(chx[j].math<chx[j+1].math){ temp.sno = chx[j].sno; chx[j].sno = chx[j+1].sno; chx[j+1].sno = temp.sno; strcpy(temp.name,chx[j+1].name ); strcpy(chx[j+1].name,chx[j].name ); strcpy(chx[j].name,temp.name ); temp.chinese = chx[j].chinese; chx[j].chinese = chx[j+1].chinese; chx[j+1].chinese = temp.chinese; temp.math = chx[j].math; chx[j].math = chx[j+1].math; chx[j+1].math = temp.math; temp.english = chx[j].english; chx[j].english = chx[j+1].english; chx[j+1].english = temp.english; /*printf("第%d个学生的学号是%d 姓名是%s 语文成绩是%d 数学成绩是%d 英语成绩是%d\n", i+1,chx[i].sno,chx[i].name,chx[i].chinese,chx[i].math,chx[i].english);*/ } struct chx temp = {NULL}; } } break; } case 4:{ for(int i=1;i<aa;i++){ for(int j=0;j<aa-i;j++){ if(chx[j].english<chx[j+1].english){ temp.sno = chx[j].sno; chx[j].sno = chx[j+1].sno; chx[j+1].sno = temp.sno; strcpy(temp.name,chx[j+1].name ); strcpy(chx[j+1].name,chx[j].name ); strcpy(chx[j].name,temp.name ); temp.chinese = chx[j].chinese; chx[j].chinese = chx[j+1].chinese; chx[j+1].chinese = temp.chinese; temp.math = chx[j].math; chx[j].math = chx[j+1].math; chx[j+1].math = temp.math; temp.english = chx[j].english; chx[j].english = chx[j+1].english; chx[j+1].english = temp.english; /*printf("第%d个学生的学号是%d 姓名是%s 语文成绩是%d 数学成绩是%d 英语成绩是%d\n", i+1,chx[i].sno,chx[i].name,chx[i].chinese,chx[i].math,chx[i].english);*/ } struct chx temp = {NULL}; } } break; } case 5:{ for(int i=0;i<aa;i++){ printf("第%d个学生的学号是%d 姓名是%s 语文成绩是%d 数学成绩是%d 英语成绩是%d\n", i+1,chx[i].sno,chx[i].name,chx[i].chinese,chx[i].math,chx[i].english); } break; } } if(a==0){ break; } } }
结果如下:
选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 1 输入学生录入个数 6 输入第1个学生的学号 1 输入第1个学生的姓名 a 输入第1个学生的语文成绩 99 输入第1个学生的数学成绩 100 输入第1个学生的英语成绩 101 输入第2个学生的学号 2 输入第2个学生的姓名 b 输入第2个学生的语文成绩 99 输入第2个学生的数学成绩 101 输入第2个学生的英语成绩 100 输入第3个学生的学号 3 输入第3个学生的姓名 c 输入第3个学生的语文成绩 100 输入第3个学生的数学成绩 99 输入第3个学生的英语成绩 101 输入第4个学生的学号 4 输入第4个学生的姓名 d 输入第4个学生的语文成绩 100 输入第4个学生的数学成绩 101 输入第4个学生的英语成绩 99 输入第5个学生的学号 5 输入第5个学生的姓名 e 输入第5个学生的语文成绩 101 输入第5个学生的数学成绩 99 输入第5个学生的英语成绩 100 输入第6个学生的学号 6 输入第6个学生的姓名 f 输入第6个学生的语文成绩 101 输入第6个学生的数学成绩 100 输入第6个学生的英语成绩 99 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 5 第1个学生的学号是1 姓名是a 语文成绩是99 数学成绩是100 英语成绩是101 第2个学生的学号是2 姓名是b 语文成绩是99 数学成绩是101 英语成绩是100 第3个学生的学号是3 姓名是c 语文成绩是100 数学成绩是99 英语成绩是101 第4个学生的学号是4 姓名是d 语文成绩是100 数学成绩是101 英语成绩是99 第5个学生的学号是5 姓名是e 语文成绩是101 数学成绩是99 英语成绩是100 第6个学生的学号是6 姓名是f 语文成绩是101 数学成绩是100 英语成绩是99 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 2 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 5 第1个学生的学号是5 姓名是e 语文成绩是101 数学成绩是99 英语成绩是100 第2个学生的学号是6 姓名是f 语文成绩是101 数学成绩是100 英语成绩是99 第3个学生的学号是3 姓名是c 语文成绩是100 数学成绩是99 英语成绩是101 第4个学生的学号是4 姓名是d 语文成绩是100 数学成绩是101 英语成绩是99 第5个学生的学号是1 姓名是a 语文成绩是99 数学成绩是100 英语成绩是101 第6个学生的学号是2 姓名是b 语文成绩是99 数学成绩是101 英语成绩是100 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 3 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 5 第1个学生的学号是4 姓名是d 语文成绩是100 数学成绩是101 英语成绩是99 第2个学生的学号是2 姓名是b 语文成绩是99 数学成绩是101 英语成绩是100 第3个学生的学号是6 姓名是f 语文成绩是101 数学成绩是100 英语成绩是99 第4个学生的学号是1 姓名是a 语文成绩是99 数学成绩是100 英语成绩是101 第5个学生的学号是5 姓名是e 语文成绩是101 数学成绩是99 英语成绩是100 第6个学生的学号是3 姓名是c 语文成绩是100 数学成绩是99 英语成绩是101 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 4 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 5 第1个学生的学号是1 姓名是a 语文成绩是99 数学成绩是100 英语成绩是101 第2个学生的学号是3 姓名是c 语文成绩是100 数学成绩是99 英语成绩是101 第3个学生的学号是2 姓名是b 语文成绩是99 数学成绩是101 英语成绩是100 第4个学生的学号是5 姓名是e 语文成绩是101 数学成绩是99 英语成绩是100 第5个学生的学号是4 姓名是d 语文成绩是100 数学成绩是101 英语成绩是99 第6个学生的学号是6 姓名是f 语文成绩是101 数学成绩是100 英语成绩是99 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.打印输出 0.退出 0
定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,、定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语的任
于 2022-11-14 22:48:50 首次发布