#include <stdio.h>
struct student
{
int no; //学号
char name[15]; //姓名
int score[3]; //三门课程的成绩
double avr; //平均成绩
};
struct student stu[50]; //声明一个结构数组变量
struct student input();
void display(struct student stud[],int count);
void sort(struct student stud[],int count);
void insert(struct student stud[],int count);
void del(struct student stud[],int count);
void main()
{
int count;
char ch;
ch='y';
printf("请输入学员信息。");
printf("\n");
count=0;
while ((ch=='y') || (ch=='Y'))
{
stu[count]=input(); //调用录入信息函数
count++;
printf("\n 是否继续?(y or n)");
scanf(" %c",&ch);
}
printf("\n排序前的学员信息如下:");
display(stu,count); //调用显示信息函数
sort(stu,count); //调用排序函数
printf("\n排序后的学员信息如下:");
display(stu,count);
printf("\n\n是否要插入新学员?(y or n)");
scanf(" %c",&ch);
if(ch=='y' || ch=='Y')
{
insert(stu,count); //调用插入信息函数
count++;
printf("\n插入新学员后的学员信息如下:");
display(stu,count);
}
printf("\n\n是否要删除某个学员?(y or n)");
scanf(" %c",&ch);
if(ch=='y' || ch=='Y')
{
del(stu,count); //调用删除信息函数
count--;
printf("\n删除后学员的信息如下:");
display(stu,count);
}
}
struct student input() //录入信息函数
{
struct student studn;
int sum,j;
printf("\n学号:");
scanf("%d",&studn.no);
printf("\n姓名:");
scanf("%s",studn.name);
printf("\n三门成绩:");
sum=0;
printf("\n");
for(j=0;j<3;j++)
{
printf("成绩%d: ",j+1);
scanf("%d",&studn.score[j]);
sum+=studn.score[j];
}
studn.avr=sum/3.0;
return studn;
}
void display(struct student stud[],int count) //显示信息函数
{
int i;
printf("\n学号\t姓名\t\t平均成绩");
printf("\n");
for(i=0;i<count;i++)
{
printf("%-03d",stud[i].no);
printf("\t%-15s",stud[i].name);
printf("\t%-10.1f",stud[i].avr);
printf("\n");
}
}
void sort(struct student stud[],int count) //排序函数
{
/* 冒泡排序法*/
struct student temp;
int a,b;
for(a=0;a<count;a++)
{
for(b=0;b<count-1-a;b++)
{
if (stu[b].avr<stu[b+1].avr)
{
temp=stu[b+1];
stu[b+1]=stu[b];
stu[b]=temp;
}
}
}
}
void insert(struct student stud[],int count) //插入函数
{
/*插入一个学员的信息,要求插入后的学员信息依然有序*/
int x,y;
struct student in;
in=input();
for(x=0;x<count;x++)
{
if(stu[x].avr<in.avr)
break;
}
for(y=count;y>x;y--) //为要插入的结构空出位置
{
stu[y]=stu[y-1];
}
stu[x]=in; //将要插入的结构保存到该位置
}
void del(struct student stud[],int count) //删除函数
{
/*删除一个指定学号的学员信息,要求删除后的学员信息依然有序*/
int o,p,num;
printf("请输入您要删除的学号:");
scanf("%d",&num);
for(o=0;o<count;o++)
{
if(num==stu[o].no)
break;
}
for(p=o+1;p<count;p++)
{
stu[o]=stu[p];
}
}
评论