1.
代码如下:
头文件 chx.h
#include<stdio.h> #include<string.h> struct chx{ char name[128]; int sno ; int chinese; int math; int english; }chx[99]; int aa = 0; int az = 0; char t[120]; struct chx temp = {NULL}; void luru() { 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; } } void chinese () { for(int i=0;i<aa;i++){ for(int j=0;j<aa;j++){ if(chx[j].chinese<chx[j+1].chinese){ temp = chx[j]; chx[j] = chx[j+1]; chx[j+1] = temp; } } } } void math() { for(int i=0;i<aa;i++){ for(int j=0;j<aa;j++){ if(chx[j].math<chx[j+1].math){ temp = chx[j]; chx[j] = chx[j+1]; chx[j+1] = temp; } } } } void english () { for(int i=0;i<aa;i++){ for(int j=0;j<aa;j++){ if(chx[j].english<chx[j+1].english){ temp = chx[j]; chx[j] = chx[j+1]; chx[j+1] = temp; } } } } void ave() { float chinese_ave = 0,math_ave = 0 ,english_ave = 0; for(int i=0;i<aa;i++){ chinese_ave = chx[i].chinese + chinese_ave; math_ave = chx[i].math + math_ave; english_ave = chx[i].english + english_ave; } printf("语文平均分是%.2f\n数学平均分是%.2f\n英语平均分是%.2f\n",chinese_ave/aa,math_ave/aa,english_ave/aa); } void prin() { 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); } } void dele() { printf("输入要删除学生的学号"); int del_sno = 0; scanf("%d",&del_sno); for(int i=0;i<aa;i++){ if(chx[i].sno==del_sno){ for(;i<aa-i;i++){ chx[i] = chx[i+1]; } } } aa = aa -1; }
2.主函数
/*定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,、 定义结构体数组存放不同学生的信息,可以在终端录入学生的信息, 可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语的任意一个*/ #include"chx.h" int main() { int a; char t[120]; while(1){ printf("选择服务\n1.录入学生信息\n2.按照语文排序\n3.按照数学排序\n4.按照英语排序\n5.求平均分\n" "6.删除学生\n7.打印输出\n0.退出\n"); scanf("%d",&a); switch(a){ case 1:{ luru(); break; } case 2:{ chinese(); prin(); break; } case 3:{ math(); prin(); break; } case 4:{ english(); prin(); break; } case 5:{ ave(); break; } case 6:{ dele(); prin(); break; } case 7:{ prin(); break; } } if(a==0){ break; } } }
结果如下:
选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.求平均分 6.删除学生 7.打印输出 0.退出 1 输入学生录入个数 3 输入第1个学生的学号 1 输入第1个学生的姓名 chx 输入第1个学生的语文成绩 100 输入第1个学生的数学成绩 99 输入第1个学生的英语成绩 98 输入第2个学生的学号 2 输入第2个学生的姓名 chx2 输入第2个学生的语文成绩 99 输入第2个学生的数学成绩 98 输入第2个学生的英语成绩 100 输入第3个学生的学号 3 输入第3个学生的姓名 chx3 输入第3个学生的语文成绩 100 输入第3个学生的数学成绩 98 输入第3个学生的英语成绩 99 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.求平均分 6.删除学生 7.打印输出 0.退出 2 第1个学生的学号是1 姓名是chx 语文成绩是100 数学成绩是99 英语成绩是98 第2个学生的学号是3 姓名是chx3 语文成绩是100 数学成绩是98 英语成绩是99 第3个学生的学号是2 姓名是chx2 语文成绩是99 数学成绩是98 英语成绩是100 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.求平均分 6.删除学生 7.打印输出 0.退出 3 第1个学生的学号是1 姓名是chx 语文成绩是100 数学成绩是99 英语成绩是98 第2个学生的学号是3 姓名是chx3 语文成绩是100 数学成绩是98 英语成绩是99 第3个学生的学号是2 姓名是chx2 语文成绩是99 数学成绩是98 英语成绩是100 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.求平均分 6.删除学生 7.打印输出 0.退出 4 第1个学生的学号是2 姓名是chx2 语文成绩是99 数学成绩是98 英语成绩是100 第2个学生的学号是3 姓名是chx3 语文成绩是100 数学成绩是98 英语成绩是99 第3个学生的学号是1 姓名是chx 语文成绩是100 数学成绩是99 英语成绩是98 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.求平均分 6.删除学生 7.打印输出 0.退出 5 语文平均分是99.67 数学平均分是98.33 英语平均分是99.00 选择服务 1.录入学生信息 2.按照语文排序 3.按照数学排序 4.按照英语排序 5.求平均分 6.删除学生 7.打印输出 0.退出 6 输入要删除学生的学号2 第1个学生的学号是3 姓名是chx3 语文成绩是100 数学成绩是98 英语成绩是99 第2个学生的学号是1 姓名是chx 语文成绩是100 数学成绩是99 英语成绩是98
定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,在基础上添加一个计算平均值和按照平均值排序以及删除指定学号的学生信息
最新推荐文章于 2024-05-15 09:05:21 发布