C程序设计 (第四版) 谭浩强 例 7.13
例 7.13 有一个3*4的矩阵,求所有元素中的最大值。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法:使用指针、动态分配内存
c
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 4
void 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;
}