#include<stdio.h>
int i,j;
int main()
{
void sa(double s[10][5]);
void ca(double s[10][5]);
void hs(double s[10][5]);
void vs(double s[10][5]);
double s[10][5];
for(i=0;i<10;i++) //10
for(j=0;j<5;j++)
scanf("%lf ",&s[i][j]);
sa(s);
ca(s);
hs(s);
vs(s);
return 0;
}
void sa(double s[10][5]) //学生平均分
{
for(i=0;i<10;i++)
{
double sum=0;//20
for(j=0;j<5;j++)
{
sum+=s[i][j];
}
printf("第%d个学生平均分%lf\n",i+1,sum/5);
}
}
//30
void ca(double s[10][5]) //课程平均分
{
double sum=0;
for(j=0;j<5;i++)
{
double sum=0;
for(i=0;i<10;j++)
{
sum+=s[i][j];
}
printf("第%d个课平均分%lf\n",j+1,sum/10); //40
}
}
void hs(double s[10][5]) //最高分
{
double h1=0;
int h2=0,h3=0;
for(i=0;i<10;i++)
{ //50
for(j=0;j<5;j++)
{
if(s[i][j]>h1)
{
h1=s[i][j];
h2=i;
h3=j;
}
}
} //60
printf("最高分为%lf为第%d个同学第%d门课程\n",h1,h2+1,h3+1);
}
void vs(double s[10][5])
{
double sum[10]={0},a[10]={0};
double q=0,m=0;
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
sum[i]+=s[i][j];
}
a[i]=sum[i]/5;
q+=a[i]*a[i];
m+=a[i];
}
printf("平均方差为%lf\n",q/10-m*m/100);
}
(1)main函数中scanf("%lf ",&s[i][j]);这一句,%lf后面的空格删掉
(2)ca函数错误,外层for循环 i++ 应该是 j++ ,内层for循环 j++ 改成 i++
void ca(double s[10][5]) //课程平均分
{
double sum = 0;
for (j = 0; j < 5; j++)
{
double sum = 0;
for (i = 0; i < 10; i++)
{
sum += s[i][j];
}
printf("第%d个课平均分%lf\n", j + 1, sum / 10); //40
}
}
完整代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int i, j;
int main()
{
void sa(double s[10][5]);
void ca(double s[10][5]);
void hs(double s[10][5]);
void vs(double s[10][5]);
double s[10][5];
for (i = 0; i < 10; i++) //10
for (j = 0; j < 5; j++)
scanf("%lf", &s[i][j]); //修改 %lf 后面的空格删掉
sa(s);
ca(s);
hs(s);
vs(s);
return 0;
}
void sa(double s[10][5]) //学生平均分
{
for (i = 0; i < 10; i++)
{
double sum = 0;//20
for (j = 0; j < 5; j++)
{
sum += s[i][j];
}
printf("第%d个学生平均分%lf\n", i + 1, sum / 5);
}
}
//30
void ca(double s[10][5]) //课程平均分
{
double sum = 0;
for (j = 0; j < 5; j++)
{
double sum = 0;
for (i = 0; i < 10; i++) //修改 j++ 改成i++
{
sum += s[i][j];
}
printf("第%d个课平均分%lf\n", j + 1, sum / 10); //40
}
}
void hs(double s[10][5]) //最高分
{
double h1 = 0;
int h2 = 0, h3 = 0;
for (i = 0; i < 10; i++)
{ //50
for (j = 0; j < 5; j++)
{
if (s[i][j] > h1)
{
h1 = s[i][j];
h2 = i;
h3 = j;
}
}
} //60
printf("最高分为%lf为第%d个同学第%d门课程\n", h1, h2 + 1, h3 + 1);
}
void vs(double s[10][5])
{
double sum[10] = { 0 }, a[10] = { 0 };
double q = 0, m = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 5; j++)
{
sum[i] += s[i][j];
}
a[i] = sum[i] / 5;
q += a[i] * a[i];
m += a[i];
}
printf("平均方差为%lf\n", q / 10 - m * m / 100);
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!