程序代码:
#include"stdio.h"
#include"math.h"
#define M 2
#define N 3
float pstu[N],psub[M],c[2];
main()
{
float pstu_average(float stu_subf[M][N]); /*此处下标都应该与宏一样以规范c代码从而为写出高质量的代码积累经验*/
float psub_average(float stu_subjf[M][N]);
float sub_maxpoint(float stu_subjef[M][N]);
float square_cut(float stu_subjectf[M][N]);
float k=0,stu_sub[M][N];
int i,j,x;
printf("请输入每个学生单科成绩");
for(i=0;i<=M-1;i++)
{
for(j=0;j<=N-1;j++)
scanf("%f",&stu_sub[i][j]);
}
loop: printf("\n");
printf("0代表求每个学生的平均分\n");
printf("1代表求每科目的平均分\n");
printf("2代表求所有分数中的最高分所对应的学生和科目\n");
printf("3代表求所有学生平均分的方差\n");
printf("请输入你要进行的操作");
printf("\n");
scanf("%d",&x);
if(x==0)
{
pstu_average(stu_sub);
for(i=0;i<=N-1;i++)
printf("%.3f\t",pstu[i]);
}
else if(x==1)
{
psub_average(stu_sub);
for(i=0;i<=M-1;i++)
printf("%.3f\t",psub[i]);
}
else if(x==2)
{
printf("学生与课程标号分别为");
sub_maxpoint(stu_sub);
for(i=0;i<=1;i++)
printf("%.3f\t",c[i]);
}
else if(x==3)
{
k=square_cut(stu_sub);
printf("%.3f\t",k);
}
goto loop;
}
/*函数一求每个学生的平均分*/
float pstu_average(float stu_subf[M][N])
{
float sumstu=0;
int i,j,n=0;
for(i=0;i<=N-1;i++)
{
for(j=0;j<=M-1;j++)
{
sumstu=sumstu+stu_subf[j][i];
}
pstu[n++]=sumstu/M; /*对于静态全局变量每次赋的值都会被保留*/
sumstu=0;
}
}
/*函数二:求每科目的平均分*/
float psub_average(float stu_subjf[M][N])
{
float sumsub=0; /*如果未赋初值则程序报错无法执行*/
int i,j,k=0;
for(i=0;i<=M-1;i++)
{
for(j=0;j<=N-1;j++)
{
sumsub=sumsub+stu_subjf[i][j];
}
psub[k++]=sumsub/N;
sumsub=0;
}
}
/*函数三:求所有分数中最高分对应的学生和科目*/
float sub_maxpoint(float stu_subjef[M][N])
{
int i,j;
float max;
max=stu_subjef[0][0];
for(i=0;i<=M-1;i++)
for(j=0;j<=N-1;j++)
if(stu_subjef[i][j]>max)
{
max = stu_subjef[i][j];
c[0]=j;
c[1]=i;
}
}
/*函数四:求平均分的方差*/
float square_cut(float stu_subjectf[M][N])
{
int i,j;
float kf,sumpstu=0,sumpsub=0;
pstu_average(stu_subjectf);
for(i=0;i<=N-1;i++)
sumpstu=sumpstu+pow(pstu[i],2);
for(j=0;j<=N-1;j++)
sumpsub=sumpsub+pstu[j];
kf=sumpstu/N-pow(sumpsub,2)/pow(N,2);
return kf;
}
经过小弟的艰辛改正 我的这个程序终于弄好了 拿出来分享下呵呵
欢迎提出意见 因为还有7个warning没改正过来
希望知道怎么改的 指教下 呵呵