输入一个n行n列的二维数组中,首先从每行中选出最大数,在从选出的n个最大数中选出最小数,用C语言实现
时间: 2024-03-01 16:53:22 浏览: 65
以下是用C语言实现的代码:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入二维数组的行数和列数:");
scanf("%d", &n);
int arr[n][n];
printf("请输入二维数组中的元素:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &arr[i][j]);
}
}
int max_arr[n];
for (int i = 0; i < n; i++) {
int max = arr[i][0];
for (int j = 1; j < n; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
}
max_arr[i] = max;
}
int min = max_arr[0];
for (int i = 1; i < n; i++) {
if (max_arr[i] < min) {
min = max_arr[i];
}
}
printf("二维数组中选出的最小数为:%d\n", min);
return 0;
}
```
首先,我们通过 `scanf` 函数获取二维数组的行数和列数。然后,定义一个二维数组 `arr` 存储输入的元素。接着,我们定义一个一维数组 `max_arr` 存储每行中的最大数。对于每一行,我们通过一个循环遍历每个元素,找到该行中的最大数,并将其存储到 `max_arr` 数组中。最后,我们遍历 `max_arr` 数组,找到其中的最小数,即为所求。
注意,在输入二维数组的元素时,我们使用了两个嵌套的循环,分别遍历每一行和每一列。在找到每行的最大数时,我们从第二个元素开始遍历,并将其与第一个元素比较。如果该元素大于第一个元素,则将其赋值给 `max` 变量,否则不做处理。在找到每行的最大数后,我们将其存储到 `max_arr` 数组中。
最后,我们遍历 `max_arr` 数组,找到其中的最小数,即为所求。注意在输出结果时,我们使用了 `%d` 占位符,表示输出一个整数。
阅读全文