#include<stdio.h>
#define N 5
#define M 5
float score[N][M];
float a_stu[N],a_cour[M];
int r,c;
int main( )
{
int i,j;
float h;
float s_var(void);
float highest( );
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
input_stu();
aver_stu();
aver_cour();
printf("\n cour1 cour2 cour3 cour4 cour5 aver\n");
for(i=0;i<N;i++)
{ printf("\n NO %2d",i+1);
for(j<=0;j<M;j++)
printf("%5.2f",score[i][j]);
printf("%5.2f\n",a_stu[i]);
}
printf("\naverage");
for(j=0;j<M;j++)
printf("%8.2f",a_cour[j]);
printf("\n");
h=highest( );
printf("higest is %7.2f NO%2d courese %2d\n",h,r,c);
printf("variance is %7.2f\n",s_var( ));
return 0;
}
void input_stu(void)
{
int i,j;
for(i=0;i<N;i++)
{
printf("NO.%2d student score : ",i+1);
for(j=0;j<N;j++)
scanf("%f",&score[i][j]);
}
}
void aver_stu(void)
{
int i,j;
float s;
for(i=0;i<N;i++)
for(j=0,s=0;j<M;j++)
s+=score[i][j];
a_stu[i]=s/5.0;//给每名学生的个人平均成绩
}
void aver_cour(void)//每个课程的学生学习成绩
{
int i,j;
float s;
for(j=0;j<M;j++)
{
s=0;
for(i=0;i<N;i++)
s+=score[i][j];
a_cour[j]=s/(float)N;
}
}
float highest( )
{
float high;
int i,j;
high=score[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(score[i][j]>high)
{
high=score[i][j];
r=i+1;
c=j+1;
}
return (high);
}
float s_var(void)//这里开始求方差了
{
int i;
float sumx,sumxn;
sumx=0.0;
sumxn=0.0;
for(i=0;i<N;i++)
{
sumx+a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));
}
修改地方用//注释了
#include<stdio.h>
#define N 5
#define M 5
float score[N][M];
float a_stu[N],a_cour[M];
int r,c;
int main( )
{
int i,j;
float h;
float s_var(void);
float highest( );
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
input_stu();
aver_stu();
aver_cour();
printf("\n cour1 cour2 cour3 cour4 cour5 aver\n");
for(i=0;i<N;i++)
{ printf("\n NO %2d ",i+1);
for(j=0;j<M;j++)//for(j<=0;j<M;j++)
printf("%5.2f ",score[i][j]);
printf("%5.2f\n",a_stu[i]);
}
printf("\naverage");
for(j=0;j<M;j++)
printf("%8.2f ",a_cour[j]);
printf("\n");
h=highest( );
printf("higest is %7.2f NO%2d courese %2d\n",h,r,c);
printf("variance is %7.2f\n",s_var( ));
return 0;
}
void input_stu(void)
{
int i,j;
for(i=0;i<N;i++)
{
printf("NO.%2d student score : ",i+1);
for(j=0;j<N;j++)
scanf("%f",&score[i][j]);
}
}
void aver_stu(void)
{
int i,j;
float s;
for(i=0;i<N;i++)
{//
s=0;//
for(j=0,s=0;j<M;j++)
s+=score[i][j];
a_stu[i]=s/5.0;//给每名学生的个人平均成绩
}//
}
void aver_cour(void)//每个课程的学生学习成绩
{
int i,j;
float s;
for(j=0;j<M;j++)
{
s=0;
for(i=0;i<N;i++)
s+=score[i][j];
a_cour[j]=s/(float)N;
}
}
float highest( )
{
float high;
int i,j;
high=score[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(score[i][j]>high)
{
high=score[i][j];
r=i+1;
c=j+1;
}
return (high);
}
float s_var(void)//这里开始求方差了
{
int i;
float sumx,sumxn;
sumx=0.0;
sumxn=0.0;
for(i=0;i<N;i++)
{
sumx+=a_stu[i]*a_stu[i];//sumx+a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));
}
修改如下,问题见注释处,求方差函数算法是否正确?供参考:
#include<stdio.h>
#define N 5
#define M 5
float score[N][M];
float a_stu[N],a_cour[M];
int r,c;
int main( )
{
int i,j;
float h;
float s_var(void);
float highest( );
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
input_stu();
aver_stu();
aver_cour();
printf("\n\t cour1 cour2 cour3 cour4 cour5 aver\n");
for(i=0;i<N;i++)
{
printf("NO %2d\t",i+1);
for(j=0;j<M;j++) //for(j<=0;j<M;j++)
printf("%5.2f\t",score[i][j]);
printf("%5.2f\n",a_stu[i]);
}
printf("\naverage");
for(j=0;j<M;j++)
printf("%5.2f\t",a_cour[j]);
printf("\n");
h=highest( );
printf("higest is %7.2f NO%2d courese %2d\n",h,r,c);
printf("variance is %7.2f\n",s_var( ));
return 0;
}
void input_stu(void)
{
int i,j;
for(i=0;i<N;i++)
{
printf("NO.%2d student score : ",i+1);
for(j=0;j<M;j++) //for(j=0;j<N;j++)
scanf("%f",&score[i][j]);
}
}
void aver_stu(void)
{
int i,j;
float s;
for(i=0;i<N;i++) {
for(j=0,s=0;j<M;j++)
s+=score[i][j];
a_stu[i]=s/5.0;//给每名学生的个人平均成绩
}
}
void aver_cour(void)//每个课程的学生学习成绩
{
int i,j;
float s;
for(j=0;j<M;j++)
{
s=0;
for(i=0;i<N;i++)
s+=score[i][j];
a_cour[j]=s/(float)N;
}
}
float highest( )
{
float high;
int i,j;
high=score[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(score[i][j]>high)
{
high=score[i][j];
r=i+1;
c=j+1;
}
return (high);
}
float s_var(void)//这里开始求方差了
{
int i;
float sumx,sumxn;
sumx=0.0;
sumxn=0.0;
for(i=0;i<N;i++)
{
sumx+a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));
}