用指针作为函数参数,编写一个计算任意m行n列二维数组中各元素的平均值。

2024年12月02日 18:37
有3个网友回答
网友(1):

最简单的方法就是定义两个全局变量数组,连函数参数的指针都省了
int a[100][100]
float b[100];
void av(int m,int n)
{
int i, j;
for(i = 0; i < m; i++)
{
b[i]=0;
for(j = 0; j < n; j++)
b[i] += a[i][j];
b[i]=b[i]*1.0/n;
}
}

把a数值输入,把b打印出来就是平均值,呵呵
a b数组大小自己根据实际情况来定

网友(2):

ps: upccash 也过来看看,咋在这又碰到了你^_^

其实我一直都想写写这样的函数了!(尽管她不是那么的标准...)
这是我的最新研究成果哦,估计是前无古人...

代码为啥不作解析?
理由:1)都说明白了你就没有任何长进了,你要自己去调试和理解,把知识变成自己的。
2)如果真正理解(我说的是“真正理解”!请动手修改并调试)了以下代码,可以说,C数组与指针对你来说已经不再是问题,也许她已经变成了你的恋人,你会爱上她的!

代码在TurboC2.0中测试通过,
VS2010中编译有错!(指针转换错误,这在预料当中!)(这是VS2010的缺点?我看未必,更多的应是优点!她要求你的代码更加规范)
其他编译器未作测试。

==========================
代码写作者:Chenqa08
2011.12.28
==========================
#include

float average(int **a, int rows, int cols)
{
float sum = 0;
int i, j;

for(i = 0; i < rows; i++)
for(j = 0; j < cols; j++)
sum += (int)a[i * cols + j];
return sum / (rows * cols);
}

int main(void)
{
int a[2][3] = {5, 7, 5, 6, 7, 6}; //请修改成你想要的int型二维数组试试,看看函数是否通用哦
//如果需要float型数据,别忘记修改下average函数

printf("avg = %f\n", average(a, 2, 3));

return 0;
}

网友(3):

……