基于#include <stdio.h> void f(int **a,int m,int n,int *mm,int *nn) { int i,j,max=a[0][0]; /****考生在以下空白处写入语句 ******/ /****考生在以上空白处写入语句 ******/ } int main() { FILE *fp; int ii,jj; int b[3][3]={{1,3,4},{2,9,5},{3,7,6}}; int *c[3]={b[0],b[1],b[2]}; /****考生在以下空白处写入调用语句 ******/ /****考生在以上空白处写入调用语句 ******/ printf("最大值为%d,行号%d,列号%d\n",b[ii][jj],ii,jj); fp=fopen("CD2.dat","wb"); fwrite(&ii,4,1,fp); fwrite(&jj,4,1,fp); fclose(fp); }编制函数f,用于在m行n列的二维数组中查找值最大的元素之行下标与列下标。 函数main提供了一个测试用例。编制函数f,用于在m行n列的二维数组中查找值最大的元素之行下标与列下标。
时间: 2023-07-23 07:30:53 浏览: 167
下面是函数f的完整代码:
```c
#include <stdio.h>
void f(int **a, int m, int n, int *mm, int *nn) {
int i, j, max = a[0][0];
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
if (a[i][j] > max) {
max = a[i][j];
*mm = i;
*nn = j;
}
}
}
}
int main() {
FILE *fp;
int ii, jj;
int b[3][3] = {{1,3,4},{2,9,5},{3,7,6}};
int *c[3] = {b[0], b[1], b[2]};
f(c, 3, 3, &ii, &jj); // 调用函数f,传入参数c、3、3、&ii、&jj
printf("最大值为%d,行号%d,列号%d\n", b[ii][jj], ii, jj);
fp = fopen("CD2.dat", "wb");
fwrite(&ii, 4, 1, fp);
fwrite(&jj, 4, 1, fp);
fclose(fp);
return 0;
}
```
解释一下代码:
1. 在函数f中,使用双重循环遍历二维数组a,找到其中的最大值max以及其所在的行下标和列下标mm、nn。
2. 在主函数main中,定义一个3x3的二维数组b,并将其每行的首元素地址存储在指针数组c中。
3. 调用函数f时,将指针数组c、3、3、以及变量ii和jj的地址作为参数传入。
4. 在函数f执行完毕后,变量ii和jj存储的即为最大值所在的行下标和列下标。
5. 最后,将ii和jj的值写入到文件CD2.dat中。
阅读全文