c语言问题$$$$$$$$$$$$$$$$$$$$$$$$$$

来源:百度知道 编辑:UC知道 时间:2024/06/10 16:13:06
# include<stdio.h>
void main()
{
void average(float *p,int n);
float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};
average(score,12);

getch();
}
void average(float *p,int n)
{ float *p_end;
float sum=0,aver;
p_end=*p+n-1;
for(;*p<=p_end;(*p)++)
sum=sum+(**p);
aver=sum/n;
printf("%average=%5.2f\n",aver);
}
编译时系统提示有错误 他们说数组传递有错误 那里错了????? 还有我指针运用那里错了??????? 请各位大哥把我错的每一步解释下 越清楚越好, 我已经提问了一次 他们都只简略说了下 不清楚 还是不明白

能不用的指针,就别用指针了吧。
否则,指针用的不好,会错误百出的。

正确的程序如下:

#include<stdio.h>
void main()
{
void average(float p[3][4],int n);
float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};

average(score,12);
getchar();
}
void average(float p[3][4],int n)
{
float sum=0,aver;
int i,j;

for(i=0;i<3;i++)
for(j=0;j<4;j++)
sum=sum+p[i][j];
aver=sum/n;
printf("%average=%5.2f\n",aver);
}

首先,你要把你的函数声明,也就是void average(float *p,int n); 这句放到main函数的前面,你不能在一个函数里面去声明另一个函数吧。
你的数组是个3*4的二维数组,而你函数参数的指针是指向浮点数的指针,这两个不匹配的。你的二维数组就好比一本书,第一维就好比你这本书的行号,第二维相当于页号,你查找书内容的时候是不是应该先找到页号,然后再找到行号呢?而你的函数参数的指针只相当于行号或只相当于者列号,你不能指望只用一个行号或只用页号就找到书中某一行的内容吧。