程序如下,编译得时候有错误原因为何?急切想知道答案。 main() { float average(float *p,int n); float search(float (*p)[4],int n); float score[3][4]= {{65.2,67.6,79,60},{80.8,87,90,81}, {90,99,100,98.9}}; average(*score,12);
search(score,2); }
float average(float *p,int n) { float *p_end, sum=0,aver; p_end=p+n-1; for(;p<=p_end;p++) sum=sum+(*p); aver=sum/n; printf("average=%f\n",aver); }
float search(float (*p)[4], int n) { int i; printf(" No.%d :\n",n); for(i=0;i<4;i++) printf("%.2f ",*(*(p+n)+i)); printf("\n"); }
----------------解决方案--------------------------------------------------------
老兄,你的程序好多错哦.不过我帮你该了的, 不知道你为什么用 二维的 数组 求 average, 还有,你都没返回值, 那你float search(float (*p)[4], int n)为什么? -> void search(float (*p)[4], int n)才是啊!!
#include<stdio.h> void average(double (*p)[4],int n); void search(double (*p)[4],int n); void main() { double score[3][4]={65.2,67.6,79,60,80.8,87,90,81,90,99,100,98.9}; average(score,12); search(score,2); }
void average(double (*p)[4],int n) { double 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=%f\n",aver); }
void search(double (*p)[4], int n) { int i; printf(" No.%d :\n",n); for(i=0;i<4;i++) printf("%.2f ",*(*(p+n)+i)); printf("\n"); }
不过你的程序 太牵强了, 没什么 自由性,
比如你的 数组 就必须是[3][4]的,不然 就要改,所以 建议你好好的把程序改改~
[此贴子已经被作者于2004-11-29 20:57:15编辑过]
----------------解决方案--------------------------------------------------------
还有,你的 float average(float *p,int n) 怎么可以 调用 二维的 score呢??
二维就要 用二维的 形参,(*p)[4],
----------------解决方案--------------------------------------------------------
还有 请把
float average(float *p,int n); float search(float (*p)[4],int n);
写在主函数 外~~
----------------解决方案--------------------------------------------------------
average(*score,12); *score没必要加 指针, 只要 数组的地址就可以了~
----------------解决方案--------------------------------------------------------
p_end=p+n-1; 这两个 怎么可以相等呢,
一个是一维的,一个 是二维的
----------------解决方案--------------------------------------------------------
有除法时 ,请用double , 不然会有warn!!
----------------解决方案--------------------------------------------------------
还有,你的 float average(float *p,int n) 怎么可以 调用 二维的 score呢??
二维就要 用二维的 形参,(*p)[4],
----------------解决方案--------------------------------------------------------
你可能没有认真看我的程序,两次调用是不一样的,指针的灵活性就在这里,
再说你可能没有明白我的问题所在。
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------