1、代码不完整,缺少删除函数,继续完善中;目前实现功能有如下
#include<stdio.h>
char del_fun();
struct student
{
int num;
char name[20];
double score;
};
int main(int argc, const char *argv[])
{
int n = 50;
struct student s[n];
int i = 0;
scanf("%d",&n);
while(n<=0|n>50)
{
printf("输入有误,重新输入班级人数");
scanf("%d",&n);
}
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的学号,姓名,成绩\n",i+1);
scanf("%d%s%lf",&s[i].num,s[i].name,&s[i].score);
}
//找出最高分,输出信息
struct student max = s[0];
for(i=1;i<n-1;i++)
{
if(max.score < s[i].score)
{
max = s[i];
}
}
printf("班里成绩最高的是:%s成绩:%lf学号:%d\n",max.name,max.score,max.num);
//按成绩降序排列,并输出-->选择排序
int j = 0;
int min;
struct student temp;
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(s[min].score < s[j].score)
{//每次都把高分放在左边
temp = s[min];
s[min]=s[j];
s[j]=temp;
}
}
}
printf("学号\t姓名\t成绩\n");
for(i=0;i<n;i++)
{
printf("%d\t%s\t%lf\n",s[i].num,s[i].name,s[i].score);
}
//按姓名查找功能,存在,就删除该学生信息
char del[20];
printf("输入要删除的学生姓名\n");
scanf("%s",&del);
int char xz;
for(i=0;i<n;i++)
{
if(strcmp(del,s[i].name)==0)
{
printf("%d\t%s\%c\n",s[i].num,s[i].name,s[i].score);
printf("要删除吗Y|N\n");
scanf("%c",&xz);
if(xz=='Y')del_fun();
}
}
return 0;
}
按成绩降序排列
void sort()
{
STU temp;
//STU max = st[0];
int j = 0;
for(i=1; i<n; i++)
{
for(j=0; j<n-1; j++)
{
if(st[j].ave < st[j+1].ave)
{
temp = st[j];
st[j]=st[j+1];
st[j+1] = temp;
}
}
}
printf("学号 语文 数学 外语 平均成绩\n");
for(i=0; i<n; i++)
{
printf("%d %.2f %.2f %.2f %.2f\n",st[i].num,st[i].score[0],st[i].score[1],st[i].score[2],st[i].ave);
}
}