#include"stdio.h"
#include"string.h"
#include<stdlib.h>
#define N 50
//声明学员结构
struct Student
{
int flag;
char xuehao[10];
char name[10];
float score[3];
float average[N];
}stu[N],*p;
void paixu(Student stu[]);
//添加学员信息
Student Add()
{
Student stu;
stu.flag=1;
printf("学号:");
scanf("%s",stu.xuehao);
printf("姓名:");
scanf("%s",stu.name);
printf("三门成绩:\n");
printf("成绩1: ");
scanf("%f",&stu.score[0]);
printf("成绩2: ");
scanf("%f",&stu.score[1]);
printf("成绩3: ");
scanf("%f",&stu.score[2]);
return stu;
}
//计算平均成绩
float pingjun(Student stu)
{
stu.average[N]=(stu.score[0]+stu.score[1]+stu.score[2])/3;
return stu.average[N];
}
//显示学员信息
void display(Student stu[N])
{
printf("flag\t学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for(int i=0;i<N;i++)
{
if(stu[i].flag==0)continue;
printf("%d\t",stu[i].flag);
printf("%s\t",stu[i].xuehao);
printf("%s\t",stu[i].name);
printf("%-6.2f\t%-6.2f\t%-6.2f\t",stu[i].score[0],stu[i].score[1],stu[i].score[2]);
printf("%-6.2f\t\n",pingjun(stu[i]));
}
}
//删除某学员
void Delete(Student *stu)
{
stu->flag=0;
}
//排序学员组
void paixu(Student stu[],int *count)
{
Student temp[N]={0};
for(int i=0;i<*count;i++)
{
for(int j=0;j<*count-i-1;j++)
{
if(pingjun(stu[j])<pingjun(stu[j+1]))
{
temp[j]=stu[j+1];
stu[j+1]=stu[j];
stu[j]=temp[j];
}
}
}
}
void main()
{
int count=0,count1=0;
int i=0;
printf("请输入学员信息:");
char c;
c='y';
do{
c=' ';
stu[i++]=Add();
printf("还要继续输入吗?<y or n>");
fflush(stdin);
c=getchar();
count++;
}while(c=='y');
printf("排序前的学员成绩如下:\n");
display(stu);
printf("排序后的学员成绩如下:\n");
paixu(stu,&count);
display(stu);
do
{
printf("是否要插入新学员?<y or n>");
fflush(stdin);
c=getchar();
if(c=getchar())
{
printf("请输入要插入的学员的信息:\n");
stu[i++]=Add();
count1++;
}
else
{
break;
}
}while(c=='y');
count+=count1;
paixu(stu,&count);
printf("插入新学员后学员的信息如下:\n");
display(stu);
do
{
Student stu[50];
int n;
printf("是否要删除某学员?<y or n>");
fflush(stdin);
c=getchar();
if(c=getchar())
{
printf("请输入要删除第几个学员:");
scanf("%d",&n);
Delete(stu+n);
}
else break;
}while(c=='y');
printf("删除后学员的信息如下:\n");
display(stu);
}
帮忙看看啊,~~昨天苦恼到今天~~~