C语言 输入10个学生5门课的成绩,分别使用函数实现下列功能 1.计算每个学生平均分 2.计算每门

C语言
输入10个学生5门课的成绩,分别使用函数实现下列功能
1.计算每个学生平均分
2.计算每门课平均分
3.找出所有50个分数中最高的分数所对应的学生和课程
4.找出有课程不及格的学生序号及其各门课成绩
5.找出单科成绩最高的学生序号并输出成绩
6.将学生按总分由高到低输出

#include<stdio.h>
int main()
{
void max(int [][5]);//注意二位数组传递参数时,行数信息可以省略,但一定列数不能
void averagek(int [][5]);
void averages(int [][5]);
int a[10][5],i;//后面很多没用上的变量就不需要了
for(i=0;i<=9;i++)
{
printf("请输入第%d名学生五科成绩(中间用空格隔开):",i+1);
scanf("%d %d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
}
averages(a);
averagek(a);
max(a);
return 0;
}
void averages(int a[][5])
{
int m,i;
for(i=0;i<=9;i++)
{
m=(a[i][0]+a[i][1]+a[i][2]+a[i][3]+a[i][4])/5;
printf("第%d名学生平均分为:%d\n",i+1,m);
}
}
void averagek(int a[][5])
{
int m,i;
for(i=0;i<=4;i++)
{
m=(a[0][i]+a[1][i]+a[2][i]+a[3][i]+a[4][i]+a[5][i]+a[6][i]+a[7][i]+a[8][i]+a[9][i])/10;
printf("第%d科成绩平均分为%d\n",i+1,m);//帮你加了个换行符,开始没加时好乱,信息全一起
}
}
void max(int a[][5])
{
int i,j,max,k,g;//你这里g后面多了逗号,小错误不要犯
max=a[0][0];
for(i=0;i<=9;i++)
for(j=0;j<=4;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
k=i;
g=j;
}
}
printf("第%d名学生的第%d科成绩取得最高分:%d\n",k+1,g+1,max);//帮你加了个换行符,开始没加时好乱,信息全一起,还有就是个数要比数组下标多1,所以要加上去
}追问

没有做完啊,一共六个要求

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-05
#include<stdio.h>
#include<math.h>

struct student
{
    int num;
    double a,b,c,d,e,sum;
};

int main()
{
    struct student s[10],pp;
    int saw,sbw,scw,sdw,sew,j,i;
    double t,sa,sb,sc,sd,se;
    for(i=0; i<10; i++)
        {
            printf("输入第%d个学生成绩\n",i+1);
            scanf("%lf %lf %lf %lf %lf",&s[i].a,&s[i].b,&s[i].c,&s[i].d,&s[i].e);
        s[i].sum=s[i].a+s[i].b+s[i].c+s[i].d+s[i].e;
        s[i].num=i+1;}
    for(i=0; i<10; i++)
    {
        sa+=s[i].a;
        sb+=s[i].b;
        sc+=s[i].c;
        sd+=s[i].d;
        se+=s[i].e;
    }
    for(i=0;i<10;i++)
    printf("第%d个学生平均分为:%.2lf\n",i+1,(s[i].sum)/5);
    printf("a,b,c,d,e门课平均分 分别为:  %.2lf %.2lf %.2lf %.2lf %.2lf\n",sa/10,sb/10,sc/10,sd/10,se/10);
    sa=sb=sc=sd=se=0;
    for(i=0; i<10; i++)
        if(sa<s[i].a)
        {
            sa=s[i].a;
            saw=i;
        }
    for(i=0; i<10; i++)
        if(sb<s[i].b)
        {
            sb=s[i].b;
            sbw=i;
        }
    for(i=0; i<10; i++)
        if(sc<s[i].c)
        {
            sc=s[i].c;
            scw=i;
        }
    for(i=0; i<10; i++)
        if(sd<s[i].d)
        {
            sd=s[i].d;
            sdw=i;
        }

    for(i=0; i<10; i++)
        if(se<s[i].e)
        {
            se=s[i].e;
            sew=i;
        }
    double x=sa;
    int mm=saw;
    if(x<sb)
    {
        x=sb;
        mm=sbw;
    }
    if(x<sc)
    {
        x=sc;
        mm=scw;
    }
    if(x<sd)
    {
        x=sd;
        mm=sdw;
    }
    if(x<se)
    {
        x=se;
        mm=sew;
    }


    printf("最高分数学生为%d 各科成绩为%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
    printf("不及格学生:\n");
    for(i=0; i<10; i++)
        if(s[i].a<60||s[i].b<60||s[i].c<60||s[i].d<60||s[i].e<60)
        {
            printf("序号%d 各科成绩: %.2lf %.2lf %.2lf %.2lf %.2lf\n",s[i].num,s[i].a,s[i].b,s[i].c,s[i].d,s[i].e);
        }
    t=0;
    for(i=0; i<10; i++)
        if(t<s[i].a)
        {
            t=s[i].a;
            mm=i;
        }
    printf("a科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
    t=0;
    for(i=0; i<10; i++)
        if(t<s[i].b)
        {
            t=s[i].b;
            mm=i;
        }
    printf("b科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
    t=0;
    for(i=0; i<10; i++)
        if(t<s[i].c)
        {
            t=s[i].c;
            mm=i;
        }
    printf("c科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
    t=0;
    for(i=0; i<10; i++)
        if(t<s[i].d)
        {
            t=s[i].d;
            mm=i;
        }
    printf("d科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
    t=0;
    for(i=0; i<10; i++)
        if(t<s[i].e)
        {
            t=s[i].e;
            mm=i;
        }
    printf("e科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
for(i=0;i<10;i++)
    for(j=0;j<9-i;j++)
    if(s[j].sum<s[j+1].sum)
{
    pp=s[j];
    s[j]=s[j+1];
    s[j+1]=pp;
}
for(i=0;i<10;i++)
{
    printf("学生序号:%d 各科分数:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[i].num,s[i].a,s[i].b,s[i].c,s[i].d,s[i].e);

}
return 0;
}

第2个回答  2016-05-05
#include<stdio.h>
int main()
{
void max(int [][5]);//注意二位数组传递参数时,行数信息可以省略,但一定列数不能
void averagek(int [][5]);
void averages(int [][5]);
int a[10][5],i;//后面很多没用上的变量就不需要了
for(i=0;i<=9;i++)
{
printf("请输入第%d名学生五科成绩(中间用空格隔开):",i+1);
scanf("%d %d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
}
averages(a);
averagek(a);
max(a);
return 0;
}
void averages(int a[][5])
{
int m,i;
for(i=0;i<=9;i++)
{
m=(a[i][0]+a[i][1]+a[i][2]+a[i][3]+a[i][4])/5;
printf("第%d名学生平均分为:%d\n",i+1,m);
}
}
void averagek(int a[][5])
{
int m,i;
for(i=0;i<=4;i++)
{
m=(a[0][i]+a[1][i]+a[2][i]+a[3][i]+a[4][i]+a[5][i]+a[6][i]+a[7][i]+a[8][i]+a[9][i])/10;
printf("第%d科成绩平均分为%d\n",i+1,m);//帮你加了个换行符,开始没加时好乱,信息全一起
}
}
void max(int a[][5])
{
int i,j,max,k,g;//你这里g后面多了逗号,小错误不要犯
max=a[0][0];
for(i=0;i<=9;i++)
for(j=0;j<=4;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
k=i;
g=j;
}
}
printf("第%d名学生的第%d科成绩取得最高分:%d\n",k+1,g+1,max);//帮你加了个换行符,开始没加时好乱,信息全一起,还有就是个数要比数组下标多1,所以要加上去
}
第3个回答  2016-04-28
得使用结构体吧?我帮你解决追问

使用函数

追答

可以解决 没问题 都能帮你实现

追问

嗯,什么时候给回复😂

追答

私信你了

追问

没呀

追答

看下我的名吧

相似回答