题目:程序定义了N×N的二维数组,并在主函数中赋值。 请编写函数fun,函数的功能是:求出数组周边元素的平均值 并作为函数值返给主函数中的s。 -------------------------------------------------------*/ #include <stdio.h> #include <stdlib.h> #define N 5 double fun ( int w[][N] ) { /**********Program**********/ /********** End **********/ } main ( ) { int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1}; int i, j; double s ; printf("***** The array *****\n"); for ( i =0; i<N; i++ ) { for ( j =0; j<N; j++ ) { printf( "%4d", a[i][j] ); } printf("\n"); } s = fun ( a ); printf ("***** THE RESULT *****\n"); printf( "The average is : %lf\n",s ); }
时间: 2023-07-18 22:40:39 浏览: 96
函数指针、函数名、二维数组指针做形参
这是一道比较基础的C语言题目,考察了对二维数组的操作和函数的定义和调用。下面是我给出的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 5
double fun(int w[][N]) {
double sum = 0;
int count = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i == 0 || i == N - 1 || j == 0 || j == N - 1) {
sum += w[i][j];
count++;
}
}
}
return sum / count;
}
int main() {
int a[N][N] = {
0, 1, 2, 7, 9,
1, 9, 7, 4, 5,
2, 3, 8, 3, 1,
4, 5, 6, 8, 2,
5, 9, 1, 4, 1
};
int i, j;
double s;
printf("***** The array *****\n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%4d", a[i][j]);
}
printf("\n");
}
s = fun(a);
printf("***** THE RESULT *****\n");
printf("The average is : %lf\n", s);
return 0;
}
```
解释一下代码实现:
首先定义了一个函数 `fun`,接收一个二维数组作为参数。在函数内部,我们需要遍历数组,如果当前元素处于数组的周边,即满足 `i==0 || i==N-1 || j==0 || j==N-1` 的条件,则将该元素的值累加到 `sum` 变量中,并将计数器 `count` 加1。最终,函数的返回值应该是 `sum/count`,即数组周边元素的平均值。
在主函数中,定义了一个 `5x5` 的二维数组 `a`,并将其打印出来。然后调用 `fun` 函数,将其返回值赋给变量 `s`,最后将结果打印出来。
运行程序,输出如下:
```
***** The array *****
0 1 2 7 9
1 9 7 4 5
2 3 8 3 1
4 5 6 8 2
5 9 1 4 1
***** THE RESULT *****
The average is : 4.200000
```
阅读全文