请问哪里有错(重新发个贴)
main(){void sb(float*p,int n);
void ab1(float(*p)[4],int n);
float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};
sb(score,12);
sb1(*score,2);
}
void sb(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("sb=%5.2f\n",aver);
}
sb1(float*p,int n)
{ int i;
printf("the soreofNO.%d are:\n",n);
for(i=0;i<4;i++)
printf("%5.2f,",*(*(p+n)+i));
getch();
}
请问哪里有错
为什么?
还有应该怎样调试这道题
----------------解决方案--------------------------------------------------------
#include<float.h> #include<stdio.h> void sb(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("sb=%5.2f\n",aver); } sb1(float *p,int n) { int i; printf("the soreofNO.%d are:\n",n); for(i=0;i<4;i++) printf("%5.2f",*(p+n+i)); getch(); } main() { float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}}; sb(*score,12); sb1(*score,2); }
这个程序可以运行了..
----------------解决方案--------------------------------------------------------
解释一下吧
----------------解决方案--------------------------------------------------------
main() {void sb(float*p,int n); void ab1(float(*p)[4],int n); float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}}; sb(score,12); sb1(*score,2); } void sb(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("sb=%5.2f\n",aver); } sb1(float(*p)[4],int n) { int i; printf("the soreofNO.%d are:\n",n); for(i=0;i<4;i++) printf("%5.2f,",*(*(p+n)+i)); getch(); } 这样也行 但是不是很明白 最后想问一下 在用指针变量做形参以接受实参数组名传递来的地址时 有2种方法(1)用指向变量的指针变量(2)用指向一维数组的指针变量(书上是这样写的) 那么这两种指向的方法有什么差异?什么情况下用第一种方法?什么情况下用第二种方法? sb1(float(*p)[4],int n)显然用用第二种方法,为什么????
----------------解决方案--------------------------------------------------------