#include<stdio.h>
#include<string.h>
#define M 3
#define N 2
void inputname(char name[M][20])
{
int i;
printf("请输入%d学生姓名:\n",M);
for(i=0;i<M;i++)
gets(name[i]);
}
void inputcourse(char course[N][20])
{
int i;
printf("请输入%d个课程的名字:\n",N);
for(i=0;i<N;i++)
gets(course[i]);
}
void inputscore(float score[M][N])
{
int i,j;
printf("请输入%d*%d实型数据:\n",M,N);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
scanf("%f",&score[i][j]);
}
}
void stuaverage(float score[M][N],float stuaver[M])
{
int i,j;
float s;
for(i=0;i<M;i++)
{
s=0;
for(j=0;j<N;j++)
s=s+score[i][j];
stuaver[i]=s/N;
}
}
void couaverage(float score[M][N],float couaver[N])
{
int i,j;
float s;
for(j=0;j<N;j++)
{
s=0;
for(i=0;i<M;i++)
s=s+score[i][j];
couaver[j]=s/M;
}
}
float max_value(float score[M][N],char name[M][20],char course[N][20],char maxinfo[2][20])
{
int i,j,n,c;
float max=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
if(score[i][j]>max)
{
max=score[i][j];
n=i;
c=j;
}
}
strcpy(maxinfo[0],name[n]);
strcpy(maxinfo[1],course[c]);
return max;
}
float junfangcha(float stuaver[M])
{
int i;
float p,q,m;
p=stuaver[0]*stuaver[0];
q=stuaver[0];
for(i=1;i<M;i++)
{
p=p+stuaver[i]*stuaver[i];
q=q+stuaver[i];
}
m=p/M-(q/M)*(q/M);
return m;
}
int main()
{
int i,j;
float score[M][N],stuaver[M],couaver[N];
float jfc,max;
char name[M][20],course[N][20],maxinfo[2][20];
inputname(name);
inputcourse(course);
inputscore(score);
stuaverage(score,stuaver);
couaverage(score,couaver);
max=max_value(score,name,course,maxinfo);
jfc=junfangcha(stuaver);
for(i=0;i<20;i++)
printf(" ");
for(i=0;i<N;i++)
printf("%-20s",course[i]);
printf("学生平均分\n");
for(i=0;i<M;i++)
{
printf("%-20s",name[i]);
for(j=0;j<N;j++)
printf("%-20.1f",score[i][j]);
printf("%-20.1f",stuaver[i]);
printf("\n");
}
printf("%-20s","课程平均分");
for(i=0;i<N;i++)
printf("%-20.1f",couaver[i]);
printf("\n\n最高分是%f,学生:%-20s,课程:%-20s\n",max,maxinfo[0],maxinfo[1]);
printf("\n学生平均分方差为:%f\n",jfc);
return 0;
}