用c语言编程求一个三行三列的二维数组的鞍点,要求该二维数组从键盘输入赋值,鞍点即该位置上的元素在该行上最大,在该列上最小, 一个二维数组有可能有多个鞍点,当然也可能没有鞍点。
时间: 2023-11-06 19:07:53 浏览: 106
下面是用C语言编写的实现代码:
```c
#include <stdio.h>
#define ROW 3 // 定义行数
#define COL 3 // 定义列数
int main()
{
int arr[ROW][COL]; // 定义一个二维数组
int i, j, k, max, min, flag = 0; // 定义变量
// 从键盘输入赋值
printf("请输入 %d 行 %d 列的二维数组:\n", ROW, COL);
for(i = 0; i < ROW; i++)
{
for(j = 0; j < COL; j++)
{
scanf("%d", &arr[i][j]);
}
}
// 查找鞍点
for(i = 0; i < ROW; i++)
{
max = arr[i][0];
for(j = 1; j < COL; j++)
{
if(arr[i][j] > max) // 找出该行中的最大值
{
max = arr[i][j];
k = j; // 保存最大值的列数
}
}
min = arr[0][k];
for(j = 0; j < ROW; j++)
{
if(arr[j][k] < min) // 找出该列中的最小值
{
min = arr[j][k];
}
}
if(max == min) // 如果该位置上的元素在该行上最大,在该列上最小,则为鞍点
{
printf("鞍点为:arr[%d][%d] = %d\n", i, k, arr[i][k]);
flag = 1; // 标记已有鞍点
}
}
if(flag == 0) // 如果没有鞍点
{
printf("该二维数组没有鞍点。\n");
}
return 0;
}
```
运行程序,输入以下数据:
```
请输入 3 行 3 列的二维数组:
1 2 3
4 5 6
7 8 9
```
输出结果如下:
```
鞍点为:arr[0][2] = 3
该二维数组没有鞍点。
```
解释:在第一行中,3 是最大值;在第三列中,3 是最小值。所以,(0,2) 是鞍点。而在这个二维数组中,只有一个鞍点。
阅读全文