C语言,求帮助
要求输出5名同学的学号,姓名,学院,四门课程(数学,英语,c语言,体育)的成绩,直接初始化赋值,并输出每名学生课程的最高分,以及每门课程的最高分和平均分...
要求输出5名同学的学号,姓名,学院,四门课程(数学,英语,c语言,体育)的成绩,直接初始化赋值,并输出每名学生课程的最高分,以及每门课程的最高分和平均分
展开
3个回答
展开全部
题目没有提及有排名并列的情况,如要考虑并列排名,每次排名需要返回数组(如果学生个数不固定,还需要动态申请)。
我这里代码就不考虑并列排名,如同一排名中最大分数出现多个,取靠前。
#include <stdio.h>
typedef struct student
{
char id[20];//学号
char name[10];//姓名
char school[20];//学院
float scores[4];//4科成绩
}STUINFO;
int main()
{
int i,j,k[5]={0},m[4]={0};//k记录每个学生最高分对应学科下标;m记录每个学科最高分对应学生下标
char course[4][10]={"数学","英语","c语言","体育"};
float maxSC[4];//每门学科最高分
float aveSC[4];//每门学科平均分
float sumSC[4]={0};//每门学科总分
float maxSTU[5];//每个学生最高分
STUINFO stus[5]={
{"201705020132","小王","美术学院",{78,87,85,93}},
{"201705020132","小李","金融学院",{88,85,87,81}},
{"201705020132","小明","电科学院",{72,89,95,73}},
{"201705020132","小艾","商务学院",{85,97,83,86}},
{"201705020132","小孙","外语学院",{82,89,81,92}},
};
for(i=0;i<4;i++)
maxSC[i]=stus[0].scores[i];//初值
for(i=0;i<5;i++)
maxSTU[i]=stus[i].scores[0];//初值
//----------开始统计----------
for(i=0;i<5;i++)
for(j=0;j<4;j++)
{
if(stus[i].scores[j]>maxSTU[i])
maxSTU[i]=stus[i].scores[j],k[i]=j;
if(stus[i].scores[j]>maxSC[j])
maxSC[j]=stus[i].scores[j],m[j]=i;
sumSC[j]+=stus[i].scores[j];
}
for(i=0;i<4;i++)
aveSC[i]=sumSC[i]/5;
//---------统计结束开始输出------------
printf("每名学生最高分情况如下:\n");
for(i=0;i<5;i++)
printf("学生姓名:%s,最高分学科:%s,得分:%.1f\n",stus[i].name,course[k[i]],maxSTU[i]);
printf("\n每门学科最高分及平均分情况如下:\n");
for(i=0;i<4;i++)
printf("学科:%s,最高分获得者:%s,分数为:%.1f,该科平均分为:%.1f\n",course[i],stus[m[i]].name,maxSC[i],aveSC[i]);
return 0;
}
展开全部
#include <stdio.h>
typedef struct student
{
int xh;
char name[10];
char xy[10];
int math;
int english;
int c_langunge;
int PE;
};
int main()
{
int i;
int max,avi;
student s[5]={ {101,"李","计算机",85,62,85,78},
{102,"张","计算机",95,62,85,62},
{203,"陆","自动化",53,89,89,75},
{204,"齐","自动化",96,63,86,95},
{205,"蒋","自动化",86,59,75,64}};
for(i=0;i<5;i++)
{
printf("第%d名同学:\n",i+1);
printf("学号:%d\n",s[i].xh);
printf("姓名:%s\n",s[i].name);
printf("学院:%s\n",s[i].xy);
printf("数学成绩:%d\n",s[i].math);
printf("英语成绩:%d\n",s[i].english);
printf("C语言成绩:%d\n",s[i].c_langunge);
printf("体育成绩:%d\n",s[i].PE);
max=0;
if(s[i].math>max) max=s[i].math;
if(s[i].english>max) max=s[i].english;
if(s[i].c_langunge>max) max=s[i].c_langunge;
if(s[i].PE>max) max=s[i].PE;
printf("最高分:%d\n",max);
}
max=0;
avi=0;
for(i=0;i<5;i++)
{
if(s[i].math>max) max=s[i].math;
avi+=s[i].math;
}
avi/=5;
printf("数学最高分:%d\t平均分:%d",max,avi);printf("\n");
max=0;
avi=0;
for(i=0;i<5;i++)
{
if(s[i].english>max) max=s[i].english;
avi+=s[i].english;
}
avi/=5;
printf("英语最高分:%d\t平均分:%d",max,avi);printf("\n");
max=0;
avi=0;
for(i=0;i<5;i++)
{
if(s[i].c_langunge>max) max=s[i].c_langunge;
avi+=s[i].c_langunge;
}
avi/=5;
printf("C语言最高分:%d\t平均分:%d",max,avi);printf("\n");
max=0;
avi=0;
for(i=0;i<5;i++)
{
if(s[i].PE>max) max=s[i].PE;
avi+=s[i].PE;
}
avi/=5;
printf("体育最高分:%d\t平均分:%d",max,avi);printf("\n");
return 0;
}
typedef struct student
{
int xh;
char name[10];
char xy[10];
int math;
int english;
int c_langunge;
int PE;
};
int main()
{
int i;
int max,avi;
student s[5]={ {101,"李","计算机",85,62,85,78},
{102,"张","计算机",95,62,85,62},
{203,"陆","自动化",53,89,89,75},
{204,"齐","自动化",96,63,86,95},
{205,"蒋","自动化",86,59,75,64}};
for(i=0;i<5;i++)
{
printf("第%d名同学:\n",i+1);
printf("学号:%d\n",s[i].xh);
printf("姓名:%s\n",s[i].name);
printf("学院:%s\n",s[i].xy);
printf("数学成绩:%d\n",s[i].math);
printf("英语成绩:%d\n",s[i].english);
printf("C语言成绩:%d\n",s[i].c_langunge);
printf("体育成绩:%d\n",s[i].PE);
max=0;
if(s[i].math>max) max=s[i].math;
if(s[i].english>max) max=s[i].english;
if(s[i].c_langunge>max) max=s[i].c_langunge;
if(s[i].PE>max) max=s[i].PE;
printf("最高分:%d\n",max);
}
max=0;
avi=0;
for(i=0;i<5;i++)
{
if(s[i].math>max) max=s[i].math;
avi+=s[i].math;
}
avi/=5;
printf("数学最高分:%d\t平均分:%d",max,avi);printf("\n");
max=0;
avi=0;
for(i=0;i<5;i++)
{
if(s[i].english>max) max=s[i].english;
avi+=s[i].english;
}
avi/=5;
printf("英语最高分:%d\t平均分:%d",max,avi);printf("\n");
max=0;
avi=0;
for(i=0;i<5;i++)
{
if(s[i].c_langunge>max) max=s[i].c_langunge;
avi+=s[i].c_langunge;
}
avi/=5;
printf("C语言最高分:%d\t平均分:%d",max,avi);printf("\n");
max=0;
avi=0;
for(i=0;i<5;i++)
{
if(s[i].PE>max) max=s[i].PE;
avi+=s[i].PE;
}
avi/=5;
printf("体育最高分:%d\t平均分:%d",max,avi);printf("\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"
struct STU{
char id[12],name[15],univ[15];
int math,engl,c_lg,phys;
};
int main(int argc,char *argv[]){
struct STU s[5]={{"12345","张三","清华",89,99,67,61},
{"23451","李四","北大",78,91,59,88},
{"34512","王五","复旦",98,79,89,100},
{"45123","赵六","海洋",86,95,91,46},
{"51234","魏七","国际",99,98,97,41}};
int i,sm,se,sc,sp,t,mh,eh,ch,ph;
printf("Each student's highest score as follows:\n");
for(t=i=0;i<5;i++,t=0){
if(s[i].math>t)
t=s[i].math;
if(s[i].engl>t)
t=s[i].engl;
if(s[i].c_lg>t)
t=s[i].c_lg;
if(s[i].phys>t)
t=s[i].phys;
printf("%8s%8s%8s\t%d\n",s[i].id,s[i].name,s[i].univ,t);
}
for(mh=eh=ch=ph=sm=se=sc=sp=i=0;i<5;i++){
if(mh<s[i].math)
mh=s[i].math;
if(eh<s[i].engl)
eh=s[i].engl;
if(ch<s[i].c_lg)
ch=s[i].c_lg;
if(ph<s[i].phys)
ph=s[i].phys;
sm+=s[i].math;
se+=s[i].engl;
sc+=s[i].c_lg;
sp+=s[i].phys;
}
printf("\n\tMATH\tENGL\tC_LG\tPHYS\n=====================================\n");
printf("HIGHEST\t%d\t%d\t%d\t%d\n",mh,eh,ch,ph);
printf("AVERAGE\t%g\t%g\t%g\t%g\n",sm/5.0,se/5.0,sc/5.0,sp/5.0);
return 0;
}
运行结果:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询