C程序设计 (第四版) 谭浩强 例 7.13
例 7.13 有一个3*4的矩阵,求所有元素中的最大值。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法:使用指针、动态分配内存
#include <stdio.h>
#include <stdlib.h>#define M 3
#define N 4void initialMatrix(int ***matrix, int m, int n){*matrix = (int**)malloc(m * sizeof(int*));for(int i = 0; i < m; i++){(*matrix)[i] = (int*)malloc(n * sizeof(int));}
}void inputMatrix(int **matrix, int m, int n){printf("Enter %d*%d matrix:\n", m, n);for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){scanf("%d", &matrix[i][j]);}}
}int max(int **matrix, int m, int n){int max = matrix[0][0];for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(matrix[i][j] > max){max = matrix[i][j];}}}return max;
}void outputMatrix(int **matrix, int m, int n, int max(int **, int, int)){printf("Max Value in the matrix is %d\n", max(matrix, m, n));
}void freeMatrix(int ***matrix, int m){for(int i = 0; i < m; i++){free((*matrix)[i]);}free(*matrix);
}int main(){int **matrix = NULL;initialMatrix(&matrix, M, N);inputMatrix(matrix, M, N);outputMatrix(matrix, M, N, max);freeMatrix(&matrix, M);system("pause");return 0;
}