答好加送100
參考答案:楼主如果有不明白的地方,尽管发消息问我。
#include <stdio.h>
#define R 3
#define L 4
void
getdata(float ** mat)
{
int i, j;
for ( i = 0; i < R; i++ ) {
printf( "Input numbers to Row %d: ", i+1 );
for ( j = 0; j < L; j++ )
scanf( "%f", *(mat+i)+j );
}
}
float
sum(float ** mat)
{
int i, j;
float sum = 0;
for ( i = 0; i < R; i++ )
for ( j = 0; j < L; j++ )
sum += *(*(mat+i)+j);
return sum;
}
float
average(float ** mat)
{
return sum(mat) / (R*L);
}
int
main(void)
{
float ln1[L];
float ln2[L];
float ln3[L];
float * mat[R] = { ln1, ln2, ln3 }; /* 所谓指针数组,就是一个元素为指针的数组,一个数组的数组名被解释为指向首元素的指针,所以只要把上面三个数组的数组名分别存入这个指针数组mat,一个指针数组就构造完成了。本题既然规定了用指针数组来实现,就不可以用二维数组,二维数组不是指针数组,而是数组的数组,两者是不等价的,这里点楼主要注意 */
getdata(mat);
printf( "sum = %f, average = %f\n", sum(mat), average(mat) );
return 0;
}