C语言,求帮助

要求输出5名同学的学号,姓名,学院,四门课程(数学,英语,c语言,体育)的成绩,直接初始化赋值,并输出每名学生课程的最高分,以及每门课程的最高分和平均分... 要求输出5名同学的学号,姓名,学院,四门课程(数学,英语,c语言,体育)的成绩,直接初始化赋值,并输出每名学生课程的最高分,以及每门课程的最高分和平均分 展开
 我来答
自我编程
2019-06-09 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

题目没有提及有排名并列的情况,如要考虑并列排名,每次排名需要返回数组(如果学生个数不固定,还需要动态申请)。

我这里代码就不考虑并列排名,如同一排名中最大分数出现多个,取靠前。

#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;
}
娱乐小憨憨
2019-06-09 · 一个正在编辑故事的小新手
娱乐小憨憨
采纳数:11 获赞数:1923

向TA提问 私信TA
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2019-06-09 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6489万
展开全部
#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;
}

运行结果:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式