C语言题,四、拓展编程题 (1)找鞍点: 一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。输入1个正整数n(1≤n≤6)和n阶方阵a中的元素,如果找到a的鞍点,就输出其下标,否则,输出“NONE”。假设方阵a至多存在1个鞍点。试编写相应程序。(注意需要复制后格式正确)
时间: 2024-03-13 14:46:15 浏览: 93
07年西北工业大学机试题
以下是 C 语言代码实现:
```c
#include <stdio.h>
int main() {
int n, a[6][6];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
int row = -1, col = -1;
for (int i = 0; i < n; i++) {
int max_in_row = 0, min_in_col = 0;
for (int j = 0; j < n; j++) {
if (a[i][j] > a[i][max_in_row]) {
max_in_row = j;
}
if (a[j][i] < a[min_in_col][i]) {
min_in_col = j;
}
}
if (a[i][max_in_row] == a[min_in_col][i]) {
row = i;
col = max_in_row;
break;
}
}
if (row != -1 && col != -1) {
printf("%d %d", row, col);
} else {
printf("NONE");
}
return 0;
}
```
代码思路:
1. 首先输入正整数 n 和 n 阶方阵 a 的元素。
2. 使用两层循环遍历方阵 a 中的每个元素,并记录每行中的最大值和每列中的最小值。
3. 如果某个元素同时满足在行中为最大值,在列中为最小值,那么该元素就是鞍点,记录其下标并退出循环。
4. 如果没有找到鞍点,输出 "NONE"。
注意事项:
1. 因为题目要求方阵 a 的阶数最大为 6,所以我们可以直接定义一个 6 × 6 的二维数组来表示方阵。
2. 代码中使用变量 row 和 col 来记录鞍点的行和列,初始值都为 -1,如果最终没有找到鞍点,则它们的值不会被修改,便于输出 "NONE"。
阅读全文