代码如下:
#include <stdio.h>
#include <string.h>
typedef struct Student
{
char name[128];
int study;
int chinese;
int math;
int English;
int average;
}studata;
//录入学生信息函数
void intput(studata *p);
//语文成绩排序函数
void my_chinese_sort(studata *p);
//数学成绩排序函数
void my_math_sort(studata *p);
//英语成绩排序函数
void my_English_sort(studata *p);
//平均数排序函数
void my_average_sort(studata *p);
//求平均数函数
void my_average(studata *p);
//遍历数据函数
void my_trav(studata *p);
//删除学员函数
void my_delete(studata *p);
int sign = 0;
int count = 0;
int main(int argc, const char *argv[])
{
studata stu_num[100];
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",&sign);
switch(sign){
case 1:
intput(stu_num);
break;
case 2:
my_chinese_sort(stu_num);
break;
case 3:
my_math_sort(stu_num);
break;
case 4:
my_English_sort(stu_num);
break;
case 5:
my_average(stu_num);
my_average_sort(stu_num);
break;
case 6:
my_delete(stu_num);
break;
case 7:
return 0;
default:
printf("输入错误,请重新输入\n");
break;
}
my_average(stu_num);
my_trav(stu_num);
}
}
//添加学生信息函数
void intput(studata *p){
int a = 0;
while(1){
getchar();
printf("请输入学生姓名:");
gets(p[count].name);
printf("请输入学生学号:");
scanf("%d",&p[count].study);
printf("请输入学生语文成绩:");
scanf("%d",&p[count].chinese);
printf("请输入学生数学成绩:");
scanf("%d",&p[count].math);
printf("请输入学生英语成绩:");
scanf("%d",&p[count].English);
count++;
printf("学生信息录入完毕,请选择是否继续添加。1:添加、0:返回上一级菜单>>");
scanf("%d",&a);
if(a !=1 )
break;
}
}
//语文成绩排序函数
void my_chinese_sort(studata *p){
studata temp;
int i = 0;
int j = 0;
for(i=0;i<5;i++){
for(j=0;j<6-i-1;j++){
if(p[j].chinese<p[j+1].chinese){
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
}
//数学成绩排序函数
void my_math_sort(studata *p){
studata temp;
int i = 0;
int j = 0;
for(i=0;i<5;i++){
for(j=0;j<6-i-1;j++){
if(p[j].math<p[j+1].math){
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
}
//英语成绩排序函数
void my_English_sort(studata *p){
studata temp;
int i = 0;
int j = 0;
for(i=0;i<5;i++){
for(j=0;j<6-i-1;j++){
if(p[j].English<p[j+1].English){
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
}
//平均数排序函数
void my_average_sort(studata *p){
studata temp;
int i = 0;
int j = 0;
for(i=0;i<5;i++){
for(j=0;j<6-i-1;j++){
if(p[j].average<p[j+1].average){
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
}
//求平均数函数
void my_average(studata *p){
int i = 0;
for(i=0;i<count;i++){
p[i].average = (p[i].chinese + p[i].math + p[i].English)/3;
}
}
//遍历数据函数
void my_trav(studata *p){
int i = 0;
for(i=0;i<count;i++){
printf("第%d名: 姓名:%s\t 学号:%d\t 语文成绩:%d\t 数学成绩:%d\t 英语成绩:%d\t 平均成绩:%d\n",i+1,p[i].name,p[i].study,p[i].chinese,p[i].math,p[i].English,p[i].average);
}
}
//删除学员函数
void my_delete(studata *p){
int stud_num = 0;
int i = 0;
int j = 0;
int s = 0;
my_trav(p);
AP: printf("请输入要删除的学员学号>>");
scanf("%d",&stud_num);
for(i=0;i<count;i++){
if(p[i].study == stud_num){
s = 1;
}
}
if(s == 0){
printf("学号输入错误,请重新输入\n");
goto AP;
}
for(i=0;i<count;i++){
if(p[i].study == stud_num){
for(j=i;j<count-1;j++){
p[j] = p[j+1];
}
count--;
}
}
}
终端执行结果:
ubuntu@ubuntu:C_high$ ./a.out
********************功能选择****************************
********************1:添加学生信息**********************
********************2:以语文成绩进行排序****************
********************3:以数学成绩进行排序****************
********************4:以英语成绩进行排序****************
********************5:以平均成绩进行排序****************
********************6:删除学员信息**********************
********************7:退出程序**************************
请输入想要执行的操作>>1
请输入学生姓名:张三
请输入学生学号:1
请输入学生语文成绩:99
请输入学生数学成绩:120
请输入学生英语成绩:130
学生信息录入完毕,请选择是否继续添加。1:添加、0:返回上一级菜单>>1
请输入学生姓名:李四
请输入学生学号:2
请输入学生语文成绩:123
请输入学生数学成绩:144
请输入学生英语成绩:146
学生信息录入完毕,请选择是否继续添加。1:添加、0:返回上一级菜单>>1
请输入学生姓名:王五
请输入学生学号:3
请输入学生语文成绩:136
请输入学生数学成绩:122
请输入学生英语成绩:112
学生信息录入完毕,请选择是否继续添加。1:添加、0:返回上一级菜单>>0
第1名: 姓名:张三 学号:1 语文成绩:99 数学成绩:120 英语成绩:130 平均成绩:116
第2名: 姓名:李四 学号:2 语文成绩:123 数学成绩:144 英语成绩:146 平均成绩:137
第3名: 姓名:王五 学号:3 语文成绩:136 数学成绩:122 英语成绩:112 平均成绩:123
********************功能选择****************************
********************1:添加学生信息**********************
********************2:以语文成绩进行排序****************
********************3:以数学成绩进行排序****************
********************4:以英语成绩进行排序****************
********************5:以平均成绩进行排序****************
********************6:删除学员信息**********************
********************7:退出程序**************************
请输入想要执行的操作>>5
第1名: 姓名:李四 学号:2 语文成绩:123 数学成绩:144 英语成绩:146 平均成绩:137
第2名: 姓名:王五 学号:3 语文成绩:136 数学成绩:122 英语成绩:112 平均成绩:123
第3名: 姓名:张三 学号:1 语文成绩:99 数学成绩:120 英语成绩:130 平均成绩:116
********************功能选择****************************
********************1:添加学生信息**********************
********************2:以语文成绩进行排序****************
********************3:以数学成绩进行排序****************
********************4:以英语成绩进行排序****************
********************5:以平均成绩进行排序****************
********************6:删除学员信息**********************
********************7:退出程序**************************
请输入想要执行的操作>>6
第1名: 姓名:李四 学号:2 语文成绩:123 数学成绩:144 英语成绩:146 平均成绩:137
第2名: 姓名:王五 学号:3 语文成绩:136 数学成绩:122 英语成绩:112 平均成绩:123
第3名: 姓名:张三 学号:1 语文成绩:99 数学成绩:120 英语成绩:130 平均成绩:116
请输入要删除的学员学号>>3
第1名: 姓名:李四 学号:2 语文成绩:123 数学成绩:144 英语成绩:146 平均成绩:137
第2名: 姓名:张三 学号:1 语文成绩:99 数学成绩:120 英语成绩:130 平均成绩:116
********************功能选择****************************
********************1:添加学生信息**********************
********************2:以语文成绩进行排序****************
********************3:以数学成绩进行排序****************
********************4:以英语成绩进行排序****************
********************5:以平均成绩进行排序****************
********************6:删除学员信息**********************
********************7:退出程序**************************
请输入想要执行的操作>>7
ubuntu@ubuntu:C_high$ cat 1_test.c