c语言结构体成绩统计问题,问题如图

要用结构体的方式来写... 要用结构体的方式来写 展开
 我来答
mr_shj
2018-05-26 · TA获得超过2679个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1367万
展开全部
#define N 10  //共10个学生 
#include <stdio.h>
struct Student{
int Sno;
char Name[20];
int Sc1,Sc2,Sc3;
int Sum;
float Avg;
};

int score(struct Student *p,int id,int sc){
if (sc==1) return p[id].Sc1;
if (sc==2) return p[id].Sc2;
if (sc==3) return p[id].Sc3;
return -1;
}
int maxid(struct Student *p,int n){
int i,Maxid=0;
for(i=1;i<n;i++)
if (p[i].Sum>p[Maxid].Sum) Maxid=i;
return Maxid;
}

float Average(struct Student *p,int n,int sc){
int i,sum=0;
for(i=1;i<n;i++)
sum+=score(p,i,sc);
return 1.0*sum/n;
}
int main()
{
int i,Maxid;
struct Student student[N];
for(i=0;i<N;i++){
scanf("%d%s%d%d%d",&student[i].Sno,student[i].Name,&student[i].Sc1,&student[i].Sc2,&student[i].Sc3);
student[i].Sum=student[i].Sc1+student[i].Sc2+student[i].Sc3;   //各个学生的总分 
student[i].Avg=student[i].Sum/3.0;   //各个学生的平均分 
}


//求各科平均分
for(i=1;i<=3;i++)
printf("%0.2f ",i,Average(student,N,i)); 
printf("\n");

//显示最高分学生详细信息 
Maxid=maxid(student,N);
printf("%d %s %d %d %d\n",student[Maxid].Sno,student[Maxid].Name,student[Maxid].Sc1,student[Maxid].Sc2,student[Maxid].Sc3);
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式