@[TOC]输入10个学生5门课的成绩,分别用函数实现下列功能:
①计算每个学生平均分;
②计算每门课的平均分;
③找出所有50个分数中最高的分数所对应的学生和课程;
④计算平均分方差:
其中,为某一学生的平均分。
代码:
#include <stdio.h>
int main(){
int average1(int str1[][5],int m,int n);
int average2(int str1[][5],int m,int n);
int average3(int str1[][5],int m,int n);
int average4(int str1[][5],int m,int n);
int a[10][5]={{70,80,90,40,50},{60,70,80,30,50},{90,80,90,93,94},{100,80,96,95,94},{50,60,70,90,67},{71,83,90,40,50},{67,70,88,30,50},{90,86,90,93,94},{100,80,93,95,94},{50,60,50,90,67}};
printf("每个学生的平均成绩\n");
average1(a,10,5);
printf("每门课的平均成绩\n");
average2(a,10,5);
average3(a,10,5);
printf("平均成绩的方差\n");
average4(a,10,5);
return 0;}
int average1(int str1[][5],int m,int n){
int i,j,sum=0,avg[50];
for(i=0;i<m;i++)
{ for(j=0;j<n;j++)
{sum+=str1[i][j];}
avg[i]=sum/n;
printf("%d\n",avg[i]);
sum=0;
}
return 0;
}
int average2(int str1[][5],int m,int n)
{ int i,j,sum=0,avg2;
for(j=0;j<n;j++)
{ for(i=0;i<m;i++)
{sum+=str1[i][j];}
avg2=sum/m;
printf("%d\n",avg2);
sum=0;
}
return 0;
}
int average3(int str1[][5],int m,int n)
{ int max=str1[0][0];
int p,k,i,j;
for(i=0;i<10;i++)
{for(j=0;j<5;j++)
{if(str1[i][j]>max)
{ max=str1[i][j];
k=i+1;
p=j+1;
}
}
}
printf("最高分对应学生和课程\n");
printf("max=%d,k=%d,p=%d",max,k,p);
return 0;}
int average4(int str1[][5],int m,int n)
{ int i,j,sum1=0,sum2=0,sum3=0;float avg4;int avg[50];
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
{sum1+=str1[i][j];}//每个学生的总成绩
avg[i]=sum1/n; //每个学生的平均成绩
sum3+=avg[i]; //每个学生的平均成绩的和
sum2+=avg[i]*avg[i];}//每个学生平均成绩的平方和
avg4=sum2/m-(sum3/m)*(sum3/m);//方差
printf("%f\n",avg4);
return 0;}