C语言创建M×N的二维动态数组,存放输入的M×N个整数,先输出这M×N个数中的最大值,再输出该二维数组
时间: 2024-05-08 14:16:40 浏览: 122
的每个元素及其对应的行列编号。
示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n, i, j, max, row, col;
int **a;
printf("请输入矩阵的行数和列数:");
scanf("%d %d", &m, &n);
// 动态分配二维数组
a = (int **)malloc(m * sizeof(int *));
for (i = 0; i < m; i++) {
a[i] = (int *)malloc(n * sizeof(int));
}
// 输入矩阵元素
printf("请输入矩阵的元素:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
// 输出最大值
max = a[0][0];
row = col = 0;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
if (a[i][j] > max) {
max = a[i][j];
row = i;
col = j;
}
}
}
printf("矩阵中的最大值为:%d,对应的行列编号为:%d %d\n", max, row, col);
// 输出二维数组
printf("矩阵的元素及其对应的行列编号如下:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%d(%d,%d) ", a[i][j], i, j);
}
printf("\n");
}
// 释放动态分配的内存
for (i = 0; i < m; i++) {
free(a[i]);
}
free(a);
return 0;
}
```
注意,在动态分配二维数组时,需要先分配一维数组的空间,再将其作为二维数组的行指针。在释放内存时,也需要按照相反的顺序进行。
阅读全文