要用c语言程序的机构体来解决

〈用结构体回答〉已知30个学生的学号姓名以及英语,语文数学3门课的成绩,编写个程序,完成下列工作:
1.全班每个学生姓名学号和3门课成绩的输入及总分计算.
2.统计各科的总成绩.
3.当给出学生姓名或学号时,检索出该生每门功课的成绩及总分成绩

#include<stdio.h>
#include<string.h>
#define max 100
typedef struct
{
char name[max];// 姓名
int num;//学号
int eng;//英语成绩
int pro;//程序设计成绩
int maths;//数学成绩
}student;
void input(student s[],int n)//输入以及求总分
{
int sum=0;
for(int i=0;i<n;i++)
{
printf("输入第%d个学生的姓名:\n",i+1);gets(s[i].name);
printf("输入第%d个学生的学号:\n",i+1);scanf("%d",&s[i].num);
printf("输入第%d个学生的英语成绩:\n",i+1);scanf("%d",&s[i].eng);
printf("输入第%d个学生的程序设计成绩:\n",i+1);scanf("%d",&s[i].pro);
printf("输入第%d个学生的数学成绩:\n",i+1);scanf("%d",&s[i].maths);
sum=s[i].eng+s[i].pro+s[i].maths;
printf("总分为:%d\n",sum);
fflush(stdin);
}
}
void sumscore(student s[],int n)//单科成绩总和
{
int sum_eng=0,sum_pro=0,sum_maths=0;
for(int i=0;i<n;i++)
{
sum_eng+=s[i].eng;
sum_pro+=s[i].pro;
sum_maths+=s[i].maths;
}
printf("英语总成绩为:%d\n",sum_eng);
printf("程序设计总成绩为:%d\n",sum_pro);
printf("数学总成绩为:%d\n",sum_maths);
}
void searchst(student s[],int n)//查找学生
{
char e[max];int number;
printf("输入要查询的姓名:\n");gets(e);
printf("输入要查询的学号:\n");scanf("%d",&number);
for(int i=0;i<n;i++)
if(!strcmp(s[i].name,e)&&number==s[i].num)
{
printf("英语成绩:%d\n程序设计成绩:%d\n数学成绩:%d\n",s[i].eng,s[i].pro,s[i].maths);
printf("总成绩为:%d\n",s[i].eng+s[i].pro+s[i].maths);
return;
}
printf("查无此人!");
}
void main()
{
student s[3];int n=3;//这里只用了3个测试,30个太夸张了,可以改成30组数....
input(s,n); //输入
printf("\n");
sumscore(s,n); //单科总分
printf("\n");
searchst(s,n); //查找
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考