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

输入10个学生5门课的成绩,分别用函数实现下列功能:1.计算每个学生的平均分;2.计算每门课的平均分;3.找出所有50个分数中最高的分数所对应的学生和课程

#include <stdio.h>
#include <math.h>
void aver_stu(int t[][5]);               //定义学生平均分函数
void aver_course(int t[][5]);            //定义课程平均分函数
void high(int t[][5]);                   //定义最高分函数
void vari(int t[][5]);                   //定义方差函数
int main()
{
    int stu[10][5];
    int i, j;
    for (i=0; i<10; i++)
        for (j=0; j<5; j++)
            scanf("%d", &stu[i][j]);     //输入10个学生各5门课的成绩
    aver_stu(stu);                       //调用学生平均分函数
    aver_course(stu);                    //调用课程平均分函数
    high(stu);                           //调用最高分函数
    vari(stu);                           //调用方差函数
    return 0;
}
//学生平均分函数
void aver_stu(int t[][5])
{
    int i, j;
    float k, ave;
    for (i=0; i<10; i++){
        for (j=0, k=0.0; j<5; j++)
            k+=t[i][j];
        ave=k/5;
        printf("No.%d student average is %f\n", i+1, ave);
    }
}
//课程平均分函数
void aver_course(int t[][5])
{
    int i, j;
    float k, ave;
    for (j=0; j<5; j++){
        for (i=0, k=0.0; i<10; i++)
            k+=t[i][j];
        ave=k/10;
        printf("No.%d course average is %f\n", i+1, ave);
    }
}
//最高分函数
void high(int t[][5])
{
    int i, j, h, stu, cour;
    for (i=0, h=0, stu=0, cour=0; i<10; i++){
        for (j=0, j<5; j++)
            if (t[i][j]>h){
                h=t[i][j];
                stu=i+1;
                cour=j+1;
            }
    }
    printf("The highest score is %d, from No.%d student & No.%d course\n", h, stu, cour);
}
//方差函数
void vari(int t[][5])
{
    int i, j, k, m;
    float temp[10], var, x1, x2;
    for (i=0, m=0; i<10; i++, m++){
        for (j=0, k=0; j<5; j++)
            k+=t[i][j];
        temp[m]=k/5;
    }
    for (i=m=x1=x2=0; i<10; i++){
        x1+=pow(temp[i], 2);
        x2+=temp[i];
    }
    var=x1/10-pow(x2/10, 2);
    printf("The variance is %f\n", var);
}
望楼主采纳

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-29
//--void input(float a[10][5]) //输入学生成绩{int i,j;for(i=0;i<10;i++){printf("输入第%d个学生五门课的成绩:",i+1);for(j=0;j<5;j++)scanf("%f",&a[i][j]);}}//--void aver_stu(float a[10][5]) //求每个学生的平均分{int i,j;float sum;for(i=0;i<10;i++){sum=0;for(j=0;j<5;j++)sum+=a[i][j];printf("第%d个学生的成绩为:",i+1);for(j=0;j<5;j++)printf("%6.2f",a[i][j]);printf("平均分为:%6.2f\n",sum/5);}}//--void aver_cour(float a[10][5]) //课程的平均分{int i,j;float sum;for(i=0;i<5;i++){sum=0;for(j=0;j<10;j++)sum+=a[j][i];printf("第%d门课的平均成绩为:%6.2f\n",i+1,sum/10);}}//--void highest(float a[10][5]) //查找最高分{int i,j,flag1,flag2;float max=0;本回答被提问者采纳
第2个回答  2020-06-02
#include <stdio
void aver_stu(int t[][5]); //定义学生平均分函数
void aver_course(int t[][5]); //定义课程平均分函数
void high(int t[][5]); //定义最高分函数
void vari(int t[][5]); //定义方差函数
int main()
{
int stu[10][5];
int i, j;
for (i=0; i<10; i++)
for (j=0; j<5; j++)
scanf("%d", &stu[i][j]); //输入10个学生各5门课的成绩
aver_stu(stu); //调用学生平均分函数
aver_course(stu); //调用课程平均分函数
high(stu); //调用最高分函数
vari(stu); //调用方差函数
return 0;
}
//学生平均分函数
void aver_stu(int t[][5])
{
int i, j;
float k, ave;
for (i=0; i<10; i++){
for (j=0, k=0.0; j<5; j++)
k+=t[i][j];
ave=k/5;
printf("No.%d student average is %f
", i+1, ave);
}
}
//课程平均分函数
void aver_course(int t[][5])
{
int i, j;
float k, ave;
for (j=0; j<5; j++){
for (i=0, k=0.0; i<10; i++)
k+=t[i][j];
ave=k/10;
printf("No.%d course average is %f
", i+1, ave);
}
}
//最高分函数
void high(int t[][5])
{
int i, j, h, stu, cour;
for (i=0, h=0, stu=0, cour=0; i<10; i++){
for (j=0, j<5; j++)
if (t[i][j]>h){
h=t[i][j];
stu=i+1;
cour=j+1;
}
}
printf("The highest score is %d, from No.%d student & No.%d course
", h, stu, cour);
}
//方差函数
void vari(int t[][5])
{
int i, j, k, m;
float temp[10], var, x1, x2;
for (i=0, m=0; i<10; i++, m++){
for (j=0, k=0; j<5; j++)
k+=t[i][j];
temp[m]=k/5;
}
for (i=m=x1=x2=0; i<10; i++){
x1+=pow(temp[i], 2);
x2+=temp[i];
}
var=x1/10-pow(x2/10, 2);
printf("The variance is %f
", var);
}
第3个回答  2012-04-25
你好!求二位数组的行列总和可以考虑用双重for循环语句来实现。
一下是学生成绩系统:
可以实现:(1) 求各门课的平均分;
(2) 找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;
(3) 找出三门课平均成绩在85-90分的学生,并输出其学号和姓名
#include<string.h>
void main(void)
{
int i,j,elect,num,count,average_score;
struct student
{
int yuwen;
int yingyu;
int shuxue;
int count;
float average_score;
}stu[5]={{78,45,76,0,0},{65,78,90,0,0},{29,46,63,0,0},{34,98,59,0,0},{80,90,99,0,0}};
for(i=0;i<5;i++)
{
stu[i].count=stu[i].yuwen+stu[i].yingyu+stu[i].shuxue;
stu[i].average_score=stu[i].count/3.0;
}
printf("1.students' score demand\n2.look for disqualified student\n3.look for good student\n\nplease input your elect number:\n");
scanf("%d",&elect);

switch(elect)
{
case 1:printf("\nplease input the number fo student[1-5]\n");
scanf("%d",&num);
printf("yuwen=%d,yingyu=%d,shuxue=%d,count=%d,average=%f",stu[num-1].yuwen,
stu[num-1].yingyu,stu[num-1].shuxue,stu[num-1].count,stu[num-1].average_score);break;
case 2:for(i=0;i<5;i++)
{
if(stu[i].yuwen<60&&stu[i].yingyu<60&&stu[i].shuxue<60||stu[i].yuwen<60&&stu[i].yingyu<60||stu[i].yuwen<60&&stu[i].shuxue<60|| stu[i].yingyu<60&&stu[i].shuxue<60)
printf("student number is:%d,\nthe score is:%d,%d,%d\n\n",i,stu[i].yuwen,stu[i].yingyu,stu[i].shuxue);
}break;
case 3:for(i=0;i<5;i++)
{if(80<=stu[i].average_score&&stu[i].average_score<=100)
printf("the student number is:%d\nscore:%f\n\n",i+1,stu[i+1].average_score);}break;
default:printf("you input error!!!");
}
getch();
}
第4个回答  2012-04-23
我给你一个更多功能的程序,你看的懂的,我亲测的
#include <stdio.h>
#define a 2
#define b 5
void stu_aver(int score[][b], int avg[])
{ int i, j;
for(i = 0; i <a; i++)
{ avg[i] = 0;
for (j = 0; j <b; j++)
{ avg[i] += score[i][j]; }
avg[i] /=b;
}}

void cou_aver(int score[][b], int avg[])
{ int i, j;
for (j = 0; j <b; j++)
{ avg[j] = 0;
for(i = 0; i <a; i++)
avg[j] += score[i][j];
avg[j] /=a; }}

void Hscore(int score[a][b], int result[])
{ int max_score = score[0][0];
int i, j, r = 0, c = 0;
for (i = 0; i <a; i++)
{ for (j = 0; j <b; j++)
{ if (score[i][j] > max_score)
{ max_score = score[i][j];
r = i;
c = j;}
}}
result[0] = max_score;
result[1] = r;
result[2] = c;
}

double D(int score[][b])
{int avg[a];
double r, sum1 = 0, sum2 = 0;
int i;
stu_aver(score, avg);
for(i = 0; i <a; ++i)
{sum1 += avg[i] * avg[i];
sum2 += avg[i];}
r = 1.0 /a * sum1 - (sum2 /a) * (sum2 /a);
return r;
}

void main()
{
int avg1[a], avg2[b], result[3];
double f;
int i;

int m,n,score[a][b] ;
for(m=0;m<a;m++)
for(n=0;n<b;n++)
scanf("%d,",&score[m][n]);

stu_aver(score, avg1);
cou_aver(score, avg2);
Hscore(score, result);
f= D(score);
printf("student average: \n");
for (i = 0; i <a; ++i)
printf("Student#%d: %d\n", i + 1, avg1[i]);
printf("course average: \n");
for (i = 0; i <b; ++i)
printf("Course#%d: %d\n", i + 1, avg2[i]);
printf("\nMax Score/Student#/Course#: %d/%d/%d\n",
result[0], result[1] + 1, result[2] + 1);
printf("\nScore Variance: %f\n", f);
}