这题目哪错了????

来源:百度知道 编辑:UC知道 时间:2024/05/03 04:50:46
#include <stdio.h>
void avg(float (*p)[3],int i,int j)
{
float average;
average=(*((*p+0)+j)+*((*p+1)+j)+*((*p+2)+j)+*((*p+3)+j)+*((*p+4)+j))/5;
printf("%5.2f\n",average);
}
void main()
{
float i,j,a[5][3],(*p)[3]=a;
for(i=0;i<5;i++)
for(j=0;j<3;j++)
scanf("%f",&a[0][0]);
avg(a,5,1);
avg(a,5,2);
avg(a,5,3);
}

这么说吧,你这个程序错误的地方太多了,最明显的地方楼上的兄弟们都说了,我就说说指针方面的问题吧,我想你的本意是计算指定的数组的指定行的平均值,而average=(*((*p+0)+j)+*((*p+1)+j)+*((*p+2)+j)+*((*p+3)+j)+*((*p+4)+j))/5;这一句的解释如下:我们假设a[0][0]的地址1234,则*p=1234,average=(*((1234+0)+j)+*((1234+1)+j)+*((1234+2)+j)+*((1234+3)+j)+*((1234+4)+j))/5;即数组a第一行的各数组元素的地址各加上j后得到的新地址里的数据之和的平均数.假设j=1,则计算的是(a[0][1]+a[0][2]+...)/5,数据怎么都不会对了,至于参数i用来干什么因为不知道你的真正本意是什么所以就不知道了,你这也没用到.有3年多没接触C语言了(哎~毕业后一直进不了这个门,都做的没技术含量的活..到处飘荡~),有些东西也记不清楚了,若有说的不明白或不正之处你自己去查下资料吧.你参照我说的再改改,好了,就这样吧.

看了一会,关于指针的不懂呐,希望有人能来解决

我不太懂这个。。C学的太烂了。。。
是不是没有结束标志啊。。我在我系统(vc++6.0+XP)中调试了一下。。可以运行。。但是貌似没有结果!

高手不要笑话。。我不懂的!就当是赚2分吧!

scanf("%f",&a[0][0]); 你这句。。。是a[i][j]吧

我运行,好象是scanf("%f")不可以,改成%d就OK了,不知道是不是我用的平台tc2.0有问题!!

这样改:
void main()
{ int i,j;
float a[5][3],(*p)[3]=a;
for(i=0;i<5;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
avg(a,5,1);
avg(a,5,2);
avg(a,5,3);
}

对,就是scan