输入10个学生5门功课的成绩,分别用函数求:①每个学生的平均分;②每门课平均分;③找出最高的分数所对…

输入10个学生5门功课的成绩,分别用函数求:①每个学生的平均分;②每门课平均分;③找出最高的分数所对应的学生和课程;④求出平均分方差:σ=1/n∑xi2-(∑xi/n)2,xi为某一学生的平均分。要求:上述函数放在专门的程序文件prog_fun.c中,而主函数放在独立的程序文件prog_main.c中,并在主函数中调用上述所有函数进行测试。 (这就是我最后的百度分了,可怜可怜我吧,求各位大姐大哥帮帮忙啊,很感激你们得啊!要准确的答案的哦·)

第1个回答  推荐于2017-05-22
留下邮箱,我把源代码发给你
//prog_fun.c写入
#include <stdio.h>
#include <math.h>
#define N 10
#define M 5
float *average(float a[][M])//每个学生平均分
{
int i,j;
float ave,*stu=new float;
printf("各个学生平均分为:\n");
for(i=0;i<N;i++)
{for(ave=0,j=0;j<M;j++)
ave+=a[i][j];
stu[i]=ave/M;
printf("学生%d:%.2f\t",i+1,stu[i]);}
printf("\n");
return stu;
}

void aver(float a[][M])//每科平均分
{
int i,j;
float ave;
printf("每科的平均分:\n");
for(i=0;i<M;i++)
{for(ave=0,j=0;j<N;j++)
ave+=a[j][i];
printf("科目%d:%.2f\t",i+1,ave/N);}
}

void hight(float a[][M])//最高分科目,学生,成绩
{
int i,j,stu=0,sub=0;
float t=a[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(t<a[i][j]){t=a[i][j];sub=j;stu=i;}
printf("科目%d,学生%d,成绩%.2f\n",sub,stu,t);
}

void D(float *a)//平均分方差
{
float xi=0,d=0;
int i,j;
for(i=0;i<N;i++)
xi+=a[i];
xi=xi/N;
for(i=0;i<N;i++)
d+=pow(a[i]-xi,2);
printf("平均分的方差为:%.2f\n",d/(N-1));

}

//prog_main.c中写入
#include <stdio.h>
#include <math.h>
#include <iostream.h>
#define N 10
#define M 5
float *average(float a[][M]);
void aver(float a[][M]);
void hight(float a[][M]);
void D(float *a);
void main()
{
float stu[N][M];//={{1,2,3,4,5},{11,12,13,14,15}};
float *stu_ave=new float;
int i=1,j;
/////////////////
for(;i<=N;i++)//手动输入10个学生5科成绩
{
printf("请输入第%d个学生的五科成绩:\n",i);
for(j=0;j<M;j++)
scanf("%f",&stu[i-1][j]);
}
/////////////////
///////////////
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
printf("%.2f ",stu[i][j]);
printf("\n");}//输入的成绩显示
///////////////////////////
stu_ave=average(stu);//每个学生平均分
aver(stu);//每科平均分
hight(stu);//最高分的科目,学生,成绩
D(stu_ave);//平均分方差

}本回答被提问者采纳
相似回答