代码实现如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int num;
char name[128];
float chinese;
float math;
float english;
float ave;
}S;
int count = 0;
void student_add(S *stu);
void student_dele(S *stu);
void sort_chinese(S *stu);
void sort_math(S *stu);
void sort_english(S *stu);
void sort_ave(S *stu);
void student_display(S *stu);
int main(int argc, const char *argv[])
{
S stu[50];
int input;
while(1)
{
printf("*******************功能选择*****************\n");
printf("****************1.录入学生信息**************\n");
printf("************2.以语文成绩进行排序************\n");
printf("************3.以数学成绩进行排序************\n");
printf("************4.以英语成绩进行排序************\n");
printf("*************5.以平均分进行排序*************\n");
printf("***************6.删除学生信息***************\n");
printf("***********0.退出学生信息管理系统***********\n");
printf("请输入要进行的操作 >");
scanf("%d", &input);
switch(input)
{
case 0:
printf("退出系统成功!\n");
return 0;
case 1:
student_add(stu);
break;
case 2:
sort_chinese(stu);
break;
case 3:
sort_math(stu);
break;
case 4:
sort_english(stu);
break;
case 5:
sort_ave(stu);
break;
case 6:
student_dele(stu);
break;
default:
printf("输入错误,请重新输入 >");
break;
}
student_display(stu);
}
return 0;
}
void student_add(S *stu)
{
int a;
while(1)
{
printf("请输入录入学生的学号>");
scanf("%d", &stu[count].num);
printf("请输入录入学生的姓名>");
scanf("%s", stu[count].name);
printf("请输入录入学生的语文成绩>");
scanf("%f", &stu[count].chinese);
printf("请输入录入学生的数学成绩>");
scanf("%f", &stu[count].math);
printf("请输入录入学生的英语成绩>");
scanf("%f", &stu[count].english);
count++;
printf("\n录入信息完毕!\n是否继续录入学生信息>\n1:继续录入 2:返回上一级菜单\n-->");
scanf("%d", &a);
if(a != 1)
break;
}
for(int i =0; i < count; i++)
stu[i].ave = (stu[i].chinese + stu[i].math + stu[i].english)/3;
}
void sort_chinese(S *stu)
{
int i, j;
S temp;
for(i = 1 ;i < count; i++)
{
for(j = 0; j < count-i; j++)
{
if(stu[j].chinese < stu[j+1].chinese)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
void sort_math(S *stu)
{
int i, j;
S temp;
for(i = 1 ;i < count; i++)
{
for(j = 0; j < count-i; j++)
{
if(stu[j].math < stu[j+1].math)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
void sort_english(S *stu)
{
int i, j;
S temp;
for(i = 1 ;i < count; i++)
{
for(j = 0; j < count-i; j++)
{
if(stu[j].english < stu[j+1].english)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
void sort_ave(S *stu)
{
int i, j;
S temp;
for(i = 1 ;i < count; i++)
{
for(j = 0; j < count-i; j++)
{
if(stu[j].ave < stu[j+1].ave)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
void student_dele(S *stu)
{
int i, j, a;
if(stu[0].num == '\0')
{
printf("\n还未有学生信息录入!\n");
return;
}
printf("请输入学生学号 >");
scanf("%d", &a);
for(i = 0; i < count; i++)
{
if(a == stu[i].num)
{
for(j = i; j < count; j++)
stu[j] = stu[j+1];
count--;
return;
}
}
if(a != stu[i].num)
{
printf("无此学生信息\n删除失败!\n");
return;
}
}
void student_display(S *stu)
{
int i;
printf("总共有%d个学生:\n\n", count);
for(i = 0 ;i < count; i++)
printf("学号|%-5d 姓名|%-5s 语文成绩|%-5.1f 数学成绩|%-5.1f 英语成绩|%-5.1f 平均成绩|%-5.2f\n", stu[i].num, stu[i].name, stu[i].chinese, stu[i].math, stu[i].english, stu[i].ave);
}
运行结果如下:
ubuntu@ubuntu:02(2022-11-15)$ gcc student.c
ubuntu@ubuntu:02(2022-11-15)$ ./a.out
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >1
请输入录入学生的学号>1
请输入录入学生的姓名>小明
请输入录入学生的语文成绩>90
请输入录入学生的数学成绩>100
请输入录入学生的英语成绩>110
录入信息完毕!
是否继续录入学生信息>
1:继续录入 2:返回上一级菜单
-->1
请输入录入学生的学号>2
请输入录入学生的姓名>小黑
请输入录入学生的语文成绩>110
请输入录入学生的数学成绩>90
请输入录入学生的英语成绩>140
录入信息完毕!
是否继续录入学生信息>
1:继续录入 2:返回上一级菜单
-->1
请输入录入学生的学号>3
请输入录入学生的姓名>小华
请输入录入学生的语文成绩>140
请输入录入学生的数学成绩>80
请输入录入学生的英语成绩>110
录入信息完毕!
是否继续录入学生信息>
1:继续录入 2:返回上一级菜单
-->2
总共有3个学生:
学号|1 姓名|小明 语文成绩|90.0 数学成绩|100.0 英语成绩|110.0 平均成绩|100.00
学号|2 姓名|小黑 语文成绩|110.0 数学成绩|90.0 英语成绩|140.0 平均成绩|113.33
学号|3 姓名|小华 语文成绩|140.0 数学成绩|80.0 英语成绩|110.0 平均成绩|110.00
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >2
总共有3个学生:
学号|3 姓名|小华 语文成绩|140.0 数学成绩|80.0 英语成绩|110.0 平均成绩|110.00
学号|2 姓名|小黑 语文成绩|110.0 数学成绩|90.0 英语成绩|140.0 平均成绩|113.33
学号|1 姓名|小明 语文成绩|90.0 数学成绩|100.0 英语成绩|110.0 平均成绩|100.00
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >3
总共有3个学生:
学号|1 姓名|小明 语文成绩|90.0 数学成绩|100.0 英语成绩|110.0 平均成绩|100.00
学号|2 姓名|小黑 语文成绩|110.0 数学成绩|90.0 英语成绩|140.0 平均成绩|113.33
学号|3 姓名|小华 语文成绩|140.0 数学成绩|80.0 英语成绩|110.0 平均成绩|110.00
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >4
总共有3个学生:
学号|2 姓名|小黑 语文成绩|110.0 数学成绩|90.0 英语成绩|140.0 平均成绩|113.33
学号|1 姓名|小明 语文成绩|90.0 数学成绩|100.0 英语成绩|110.0 平均成绩|100.00
学号|3 姓名|小华 语文成绩|140.0 数学成绩|80.0 英语成绩|110.0 平均成绩|110.00
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >5
总共有3个学生:
学号|2 姓名|小黑 语文成绩|110.0 数学成绩|90.0 英语成绩|140.0 平均成绩|113.33
学号|3 姓名|小华 语文成绩|140.0 数学成绩|80.0 英语成绩|110.0 平均成绩|110.00
学号|1 姓名|小明 语文成绩|90.0 数学成绩|100.0 英语成绩|110.0 平均成绩|100.00
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >6
请输入学生学号 >1
总共有2个学生:
学号|2 姓名|小黑 语文成绩|110.0 数学成绩|90.0 英语成绩|140.0 平均成绩|113.33
学号|3 姓名|小华 语文成绩|140.0 数学成绩|80.0 英语成绩|110.0 平均成绩|110.00
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >6
请输入学生学号 >2
总共有1个学生:
学号|3 姓名|小华 语文成绩|140.0 数学成绩|80.0 英语成绩|110.0 平均成绩|110.00
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >6
请输入学生学号 >3
总共有0个学生:
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >6
还未有学生信息录入!
总共有0个学生:
*******************功能选择*****************
****************1.录入学生信息**************
************2.以语文成绩进行排序************
************3.以数学成绩进行排序************
************4.以英语成绩进行排序************
*************5.以平均分进行排序*************
***************6.删除学生信息***************
***********0.退出学生信息管理系统***********
请输入要进行的操作 >0
退出系统成功!
ubuntu@ubuntu:02(2022-11-15)$