写一个C语言代码:输入输出M行N列的二维数组所有元素的值,并且求最大元素的值及其所在的行号和列号,要求每个模块都用函数完成。
时间: 2023-12-12 13:03:29 浏览: 219
C语言程序设计-求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个);.c
5星 · 资源好评率100%
以下是一个实现该要求的C语言代码:
```c
#include <stdio.h>
#define M 3 // 定义二维数组的行数
#define N 4 // 定义二维数组的列数
// 函数声明
void input_matrix(int matrix[M][N]); // 输入二维数组
void output_matrix(int matrix[M][N]); // 输出二维数组
void find_max(int matrix[M][N], int *max, int *max_row, int *max_col); // 查找最大元素及其位置
int main()
{
int matrix[M][N]; // 定义二维数组
int max, max_row, max_col; // 定义最大元素及其位置
input_matrix(matrix); // 输入二维数组
printf("The matrix is:\n");
output_matrix(matrix); // 输出二维数组
find_max(matrix, &max, &max_row, &max_col); // 查找最大元素及其位置
printf("The max element is %d, located in row %d, column %d.\n", max, max_row, max_col);
return 0;
}
// 输入二维数组
void input_matrix(int matrix[M][N])
{
int i, j;
printf("Enter the elements of the matrix:\n");
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
scanf("%d", &matrix[i][j]);
}
}
}
// 输出二维数组
void output_matrix(int matrix[M][N])
{
int i, j;
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
// 查找最大元素及其位置
void find_max(int matrix[M][N], int *max, int *max_row, int *max_col)
{
int i, j;
*max = matrix[0][0]; // 初始化最大元素为第一个元素
*max_row = 0;
*max_col = 0;
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
if (matrix[i][j] > *max) { // 如果当前元素比最大元素还大
*max = matrix[i][j]; // 更新最大元素
*max_row = i; // 更新最大元素所在行号
*max_col = j; // 更新最大元素所在列号
}
}
}
}
```
该代码中,我们定义了三个函数,分别用于输入二维数组、输出二维数组和查找最大元素及其位置。在 `main` 函数中,我们首先定义了一个二维数组,然后调用 `input_matrix` 函数输入二维数组的元素值,再调用 `output_matrix` 函数输出二维数组的元素值,最后调用 `find_max` 函数查找最大元素及其位置,并输出结果。
在 `find_max` 函数中,我们使用了指针来记录最大元素及其位置。首先将最大元素初始化为第一个元素,然后遍历整个二维数组,如果当前元素比最大元素还大,则更新最大元素及其位置。
阅读全文