#include<stdio.h>
#include<math.h>
void student_ave(int a[][6],int num)//学生5门课程的成绩的平均分
{
int i;
for(i=0;i<5;i++)
{a[num][5]+=a[num][i];}
printf("%d号同学的平均成绩为:%.2lf",num+1,(double)a[num][5]/5);
}
void course_ave(int a[][6],int course)//课程所有学生的成绩的平均分
{
int i;
for(i=0;i<3;i++)
a[3][course]+=a[i][course];
printf("第%d门课程的平均分为:%.2lf\n",course+1,(double)a[3][course]/3);
}
double All_ave(int a[][6])//所有学生所有成绩的平均分
{
int i,n,Allave=0;
for(i=0;i<3;i++)
{
for(n=0;n<5;n++)
//a[3][5]+=a[i][n];
Allave+=a[i][n];
}
return (double)Allave/15;
}
double AllPC(int a[][6])//所有学生所有课程的标准偏差
{
int i;
double n=0,k=0;
for(i=0;i<3;i++)
k+=((double)a[i][5]/5-All_ave(a))*((double)a[i][5]/5-All_ave(a));
k/=3;
n=sqrt(k);
printf("%.2lf",n);
return n;
}
void PC(int a[][6],int num)//学生的偏差值
{
double p=0;
p=((double)a[num][5]/5-All_ave(a))/AllPC(a);
printf("偏差值为:%.2lf",p);
}
void Max(int a[][6])//找最高分
{
double max=0;
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
if(a[i][j]>max)
max=a[i][j];
}
}
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
if(a[i][j]==max)
printf("最高分是%d同学第%d科:%.2lf分\n",i+1,j+1,max);
}
}
}
int main()
{
int a[4][6]={0},course=0,num=0;
for(num=0;num<3;num++)
for(course=0;course<5;course++)
{
printf("输入%d号同学的第%d门课程成绩",num+1,course+1);
scanf("%d",&a[num][course]);
if(a[num][course]<0||a[num][course]>100)
{
printf("请再次输入第%d个同学的第%d门课程成绩",num+1,course+1);
scanf("%d",&a[num][course]);
}
}
for(num=0;num<3;num++)
{
student_ave(a,num);
printf("\n");
PC(a,num);
printf("\n");
}
for(course=0;course<5;course++)
{
course_ave(a,course);
}
Max(a);
}
这个C语言代码错在哪里呢?输入所以的数据都一样,但偏差值不同的,最后...
for(num=0;num<3;num++){ student_ave(a,num);printf("\\n");} 分开写,上面没算完所有数了 for(num=0;num<3;num++){ PC(a,num);printf("\\n");} 注意AllPC(a)返回0时 不要做除法