visualc++6.0代码报错,前面用的是double型,但不知道为啥会报错,请大家帮忙看一下
#include<stdio.h>
int i,j;
int main()
{
void sa(double);
void ca(double);
void hs(double);
void vs(double);
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);
}
sa、ca、hs、vs这几个函数,你在main函数中声明的时候,参数类型都是double,但是,调用的时候都是double 类型的二维数组,前后不一致,所以报错。
只需要修改main函数中这四个函数的声明即可,main函数修改如下:
int main()
{
void sa(double a[][5]);
void ca(double a[][5]);
void hs(double a[][5]);
void vs(double a[][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;
}
6-9行声明错误,要跟下面匹配,声明里是double类型,下面实现则是double[][]类型
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!