定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语的任意一个,添加一个计算平均值和按照平均值排序以及删除指定学号的学生信息
#include<stdio.h>
//定义的学生信息结构体
typedef struct student
{
int num;
char name[128];
float Chinese;
float math;
float English;
float ave;
}STU;
int count=0;//记录学生的数量
void student_add(STU *stu);
void student_del(STU *stu);
void student_sort_math(STU *stu);
void student_sort_chinese(STU *stu);
void student_sort_english(STU *stu);
void student_sort_ave(STU *stu);
void student_display(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:
student_add(stu);
break;
case 2:
student_del(stu);
break;
case 3:
student_sort_chinese(stu);
break;
case 4:
student_sort_math(stu);
break;
case 5:
student_sort_english(stu);
break;
case 6:
student_sort_ave(stu);
break;
case 7:
printf("程序正常退出\n");
return 0;
break;
default:
printf("输入错误,请重新输入\n");
break;
}
//学生的遍历
student_display(stu);
}
return 0;
}
//添加学员信息
void student_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 student_del(STU *stu)
{
int a,b,i,j;
int x = 0;
AP: printf("请输入要删除的学生学号>>");
scanf("%d",&a);
for(i=0;i<count;i++){
if(a == stu[i].num){
x = 1;
}
}
if(x == 0){
printf("学号输入错误,请重新输入\n");
goto AP;
}
printf("是否确认删除该学生,确认请输入1 返回请输入0");
scanf("%d",&b);
switch(b){
case 1:
for(int i=0;i<count;i++){
if(a==stu[i].num){
for(int j=i;j<count-i;j++){
stu[j]=stu[j+1];
}
}
}
count=count-1;
printf("删除成功");
break;
case 2:
printf("取消删除");
break;
default:
printf("输入错误");
break;
}
}
//以数学成绩进行排序
void student_sort_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 student_sort_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 student_sort_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;
}
}
}
}
//以平均成绩进行排序
void student_sort_ave(STU *stu)
{
int i,j,x;
STU tmp;
for(int i=0;i<count;i++)
{
stu[i].ave =(stu[i].Chinese+stu[i].math+stu[i].English)/3;
}
for(x = 0; x < count-1; x++)
{
for(i = 0; i < count-x-1; i++)
{
if(stu[i].ave< stu[i+1].ave)
{
tmp = stu[i];
stu[i] = stu[i+1];
stu[i+1] = tmp;
}
}
}
}
//遍历学生信息
void student_display(STU *stu)
{
printf("总共%d个学员:\n",count);
for(int i=0;i<count;i++)
{
printf("num|%d 姓名|%s 语文成绩|%.2f 数学成绩|%.2f 英语成绩|%.2f 平均成绩|%.2f\n\n",stu[i].num,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].ave);
}
}
[点击并拖拽以移动]
执行结果
********功能选择***************
*******1.添加学生信息***********
*******2.删除学生信息***********
*******3.以语文成绩进行排序*****
*******4.以数学成绩进行排序*****
*******5.以英语成绩进行排序*****
*******6.以平均成绩进行排序*****
*******7.退出程序**************
请输入要进行的操作>1
请输入要添加的学生学号>1
请输入要添加的学生姓名>张三
请输入要添加的学生语文成绩>123
请输入要添加的学生数学成绩>122
请输入要添加的学生英语成绩>142
学生信息录入完毕,请选择是否继续添加 1:添加 0:返回上一级菜单>1
请输入要添加的学生学号>2
请输入要添加的学生姓名>李四
请输入要添加的学生语文成绩>95
请输入要添加的学生数学成绩>133
请输入要添加的学生英语成绩>120
学生信息录入完毕,请选择是否继续添加 1:添加 0:返回上一级菜单>1
请输入要添加的学生学号>3
请输入要添加的学生姓名>王五
请输入要添加的学生语文成绩>74
请输入要添加的学生数学成绩>150
请输入要添加的学生英语成绩>66
学生信息录入完毕,请选择是否继续添加 1:添加 0:返回上一级菜单>1
请输入要添加的学生学号>4
请输入要添加的学生姓名>小陈
请输入要添加的学生语文成绩>90
请输入要添加的学生数学成绩>90
请输入要添加的学生英语成绩>88
学生信息录入完毕,请选择是否继续添加 1:添加 0:返回上一级菜单>0
总共4个学员:
num|1 姓名|张三 语文成绩|123.00 数学成绩|122.00 英语成绩|142.00 平均成绩|0.00
num|2 姓名|李四 语文成绩|95.00 数学成绩|133.00 英语成绩|120.00 平均成绩|0.00
num|3 姓名|王五 语文成绩|74.00 数学成绩|150.00 英语成绩|66.00 平均成绩|0.00
num|4 姓名|小陈 语文成绩|90.00 数学成绩|90.00 英语成绩|88.00 平均成绩|0.00
********功能选择***************
*******1.添加学生信息***********
*******2.删除学生信息***********
*******3.以语文成绩进行排序*****
*******4.以数学成绩进行排序*****
*******5.以英语成绩进行排序*****
*******6.以平均成绩进行排序*****
*******7.退出程序**************
请输入要进行的操作>2
请输入要删除的学生学号4
是否确认删除该学生,确认请输入1 返回请输入01
删除成功总共3个学员:
num|1 姓名|张三 语文成绩|123.00 数学成绩|122.00 英语成绩|142.00 平均成绩|0.00
num|2 姓名|李四 语文成绩|95.00 数学成绩|133.00 英语成绩|120.00 平均成绩|0.00
num|3 姓名|王五 语文成绩|74.00 数学成绩|150.00 英语成绩|66.00 平均成绩|0.00
********功能选择***************
*******1.添加学生信息***********
*******2.删除学生信息***********
*******3.以语文成绩进行排序*****
*******4.以数学成绩进行排序*****
*******5.以英语成绩进行排序*****
*******6.以平均成绩进行排序*****
*******7.退出程序**************
请输入要进行的操作>6
总共3个学员:
num|1 姓名|张三 语文成绩|123.00 数学成绩|122.00 英语成绩|142.00 平均成绩|129.00
num|2 姓名|李四 语文成绩|95.00 数学成绩|133.00 英语成绩|120.00 平均成绩|116.00
num|3 姓名|王五 语文成绩|74.00 数学成绩|150.00 英语成绩|66.00 平均成绩|96.67
********功能选择***************
*******1.添加学生信息***********
*******2.删除学生信息***********
*******3.以语文成绩进行排序*****
*******4.以数学成绩进行排序*****
*******5.以英语成绩进行排序*****
*******6.以平均成绩进行排序*****
*******7.退出程序**************