有10个 结构体变量,内含学生学号、姓名和三门课的成绩,要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课成绩和平均成绩(C语言)
#include<stdio.h>
#define N 3
struct student
{
int num;
char name[20];
float score[3];
double average;
}stu[N];
void input();
struct student max();
void print();
struct student search();
void deleete();
void login();
int main()
{
struct student *p=stu;
int s;
int f=1;
do{
login();//登录
printf("请选择\n");
scanf("%d",&s);
switch(s)
{
case 1:
system("pause");//输入学生信息
system("cls");
input(p);
break;
case 2:
system("pause");//找出最大值
system("cls");
printf("成绩最高的学生:\n");
print(max(p));
break;
case 3:
system("pause");//打印学生信息
system("cls");
print(search(p));
break;
case 4:
system("pause");//查找学生信息
system("cls");
deleete(p);
break;
case 0:
system("pause");//返回上一级
system("cls");
f=0;
}
}while(f);
return 0;
}
void login()//登录
{
printf("*************************选择菜单*****************************\n\n");
printf("1--输入学生信息\n\n");
printf("2--输出平均分最高的学生信息\n\n");
printf("3--查询学生信息(依据学号)\n\n");
printf("4--删除学生信息\n\n");
printf("0--退出程序\n\n");
}
void input(struct student s[])//输入学生信息
{
int i=0,j=0;
printf("请输入学生信息:\n");
for(i=0;i<N;i++)
{
scanf("%d %s",&s[i].num,&s[i].name);
for(j=0;j<3;j++)
scanf("%f",&s[i].score[j]);
s[i].average=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3;
}
}
struct student max(struct student s[])//找出最大值
{
int i=0;
int m=0;
for(i=0;i<N;i++)
{
if(s[i].average>s[m].average)
{
m=i;
}
}
return s[m];
}
void print(struct student s)//打印学生信息
{
printf("学号:%d\n",s.num);
printf("姓名:%s\n",s.name);
printf("三门课成绩:%5.1f,%5.1f,%5.1f\n",s.score[0],s.score[1],s.score[2]);
printf("平均成绩:%6.2f\n",s.average);
}
struct student search(struct student s[])//查找学生信息
{
int n;
int i=0;
printf("请输入学生学号:");
scanf("%d",&n);
while(s[i].num!=n)
{
i++;
}
return s[i];
}
void deleete(struct student s[])//覆盖删除学生信息
{
int n;
int i=0,j;
printf("请输入学生学号:");
scanf("%d",&n);
while(s[i].num!=n)
{
i++;
}
for(j=i;j<N-1;j++)
{
s[j]=s[j+1];
}
}