代码如下:
#include<stdio.h>
typedef struct student
{
int num;
char name[128];
float Chinese;
float math;
float English;
float avg;
}STU;
int count=0;
int avg(STU *stu);
void shanchu(STU *stu);
void add(STU *stu);
void math(STU *stu);
void chinese(STU *stu);
void english(STU *stu);
int main(int argc, char const *argv[])
{
STU stu[100];
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("*******7.退出程序*×*************\n");
printf("请输入要进行的操作>");
scanf("%d",&input);
switch(input)
{
case 1:
add(stu);
break;
case 2:
chinese(stu);
break;
case 3:
math(stu);
break;
case 4:
english(stu);
break;
case 5:
avg(stu);
break;
case 6:
shanchu(stu);
break;
case 7:
printf("程序正常退出\n");
return 0;
break;
default:
printf("输入错误,请重新输入\n");
break;
}
printf("总共%d个学员:\n",count);
for(int i=0;i<count;i++)
{
printf("学号%d 姓名%s 语文成绩%.2f 数学成绩%.2f 英语成绩%.2f\n",stu[i].num,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English);
}
}
return 0;
}
void add(STU *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++;//学生数量+1
printf("继续添加 1:添加 0:返回菜单");
scanf("%d",&a);
if(a!=1)
break;
}
}
void shanchu(STU *stu)
{
int n;
int i,j;
printf("请输入你要删除的学生信息的学生号:\n");
scanf("%d",&n);
for(i = 0;i<count;i++)
{
if(n == stu[i].num)
{
for(int j = i;j<count;j++)
{
stu[j] = stu[j+1];
count--;
}
}
}
}
int avg(STU *stu)
{
int i, j;
STU tmp;
for(i = 0; i < count-1; i++)
{
for(j = 0; j < count-i-1; j++)
{
if((stu[j].English+stu[j].math+stu[j].Chinese)/3< (stu[j+1].English+stu[j+1].math+stu[j+1].Chinese)/3)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
void math(STU *stu)
{
int i, j;
STU tmp;
for(i = 0; i < count-1; i++)
{
for(j = 0; j < count-i-1; j++)
{
if(stu[j].math< stu[j+1].math)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
void chinese(STU *stu)
{
int i, j;
STU tmp;
for(i = 0; i < count-1; i++)
{
for(j = 0; j < count-i-1; j++)
{
if(stu[j].Chinese< stu[j+1].Chinese)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
void english(STU *stu)
{
int i, j;
STU tmp;
for(i = 0; i < count-1; i++)
{
for(j = 0; j < count-i-1; j++)
{
if(stu[j].English< stu[j+1].English)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
删除结果如下:
ubuntu@ubuntu:day2$ gcc zy.c
ubuntu@ubuntu:day2$ ./a.out
********功能选择******×*********
*******1.添加学生信息***********
*******2.以语文成绩进行排序*****
*******3.以数学成绩进行排序*****
*******4.以英语成绩进行排序*****
*******5.平均分成绩进行排序*****
*******6.删除学生信息***********
*******7.退出程序*×*************
请输入要进行的操作>1
请输入学生学号:1
请输入学生姓名:大木
请输入学生语文成绩:95
请输入学生数学成绩:100
请输入学生英语成绩:93
继续添加 1:添加 0:返回菜单1
请输入学生学号:2
请输入学生姓名:小智
请输入学生语文成绩:85
请输入学生数学成绩:76
请输入学生英语成绩:70
继续添加 1:添加 0:返回菜单1
请输入学生学号:3
请输入学生姓名:小霞
请输入学生语文成绩:90
请输入学生数学成绩:70
请输入学生英语成绩:84
继续添加 1:添加 0:返回菜单1
请输入学生学号:4
请输入学生姓名:小刚
请输入学生语文成绩:66
请输入学生数学成绩:82
请输入学生英语成绩:86
继续添加 1:添加 0:返回菜单1
请输入学生学号:5
请输入学生姓名:小姚
请输入学生语文成绩:88
请输入学生数学成绩:88
请输入学生英语成绩:88
继续添加 1:添加 0:返回菜单0
总共5个学员:
学号1 姓名大木 语文成绩95.00 数学成绩100.00 英语成绩93.00
学号2 姓名小智 语文成绩85.00 数学成绩76.00 英语成绩70.00
学号3 姓名小霞 语文成绩90.00 数学成绩70.00 英语成绩84.00
学号4 姓名小刚 语文成绩66.00 数学成绩82.00 英语成绩86.00
学号5 姓名小姚 语文成绩88.00 数学成绩88.00 英语成绩88.00
********功能选择******×*********
*******1.添加学生信息***********
*******2.以语文成绩进行排序*****
*******3.以数学成绩进行排序*****
*******4.以英语成绩进行排序*****
*******5.平均分成绩进行排序*****
*******6.删除学生信息***********
*******7.退出程序*×*************
请输入要进行的操作>2
总共5个学员:
学号1 姓名大木 语文成绩95.00 数学成绩100.00 英语成绩93.00
学号3 姓名小霞 语文成绩90.00 数学成绩70.00 英语成绩84.00
学号5 姓名小姚 语文成绩88.00 数学成绩88.00 英语成绩88.00
学号2 姓名小智 语文成绩85.00 数学成绩76.00 英语成绩70.00
学号4 姓名小刚 语文成绩66.00 数学成绩82.00 英语成绩86.00
********功能选择******×*********
*******1.添加学生信息***********
*******2.以语文成绩进行排序*****
*******3.以数学成绩进行排序*****
*******4.以英语成绩进行排序*****
*******5.平均分成绩进行排序*****
*******6.删除学生信息***********
*******7.退出程序*×*************
请输入要进行的操作>5
总共5个学员:
学号1 姓名大木 语文成绩95.00 数学成绩100.00 英语成绩93.00
学号5 姓名小姚 语文成绩88.00 数学成绩88.00 英语成绩88.00
学号3 姓名小霞 语文成绩90.00 数学成绩70.00 英语成绩84.00
学号4 姓名小刚 语文成绩66.00 数学成绩82.00 英语成绩86.00
学号2 姓名小智 语文成绩85.00 数学成绩76.00 英语成绩70.00
********功能选择******×*********
*******1.添加学生信息***********
*******2.以语文成绩进行排序*****
*******3.以数学成绩进行排序*****
*******4.以英语成绩进行排序*****
*******5.平均分成绩进行排序*****
*******6.删除学生信息***********
*******7.退出程序*×*************
请输入要进行的操作>6
请输入你要删除的学生信息的学生号:
2
总共4个学员:
学号1 姓名大木 语文成绩95.00 数学成绩100.00 英语成绩93.00
学号5 姓名小姚 语文成绩88.00 数学成绩88.00 英语成绩88.00
学号3 姓名小霞 语文成绩90.00 数学成绩70.00 英语成绩84.00
学号4 姓名小刚 语文成绩66.00 数学成绩82.00 英语成绩86.00