c语言为整型二维数组a[4][5]输入20个数据,并找出数组中的鞍点。鞍点指该位置上的元素值在该行中最大,且在该列中最小。如果有鞍点,请输出其下标值;如果没有鞍点,请给出没有鞍点的提示信息。
时间: 2023-06-08 14:08:33 浏览: 108
找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小 也可能没有鞍点
您好!感谢您的提问。关于您的问题,以下是C语言实现的代码:
#include <stdio.h>
int main()
{
int a[4][5]; //定义整型二维数组
int i, j, k, max, min, index_i = -1, index_j = -1, flag = 0;
//i、j、k为循环控制变量,max为行最大值,min为列最小值,
//index_i、index_j为鞍点位置,flag用于标记是否存在鞍点
printf("请依次输入20个整数:\n");
for(i = 0; i < 4; i++)
{
for(j = 0; j < 5; j++)
{
scanf("%d", &a[i][j]); //输入20个数据
}
}
for(i = 0; i < 4; i++)
{
max = a[i][0]; //假设当前行的第一个数为最大值
for(j = 1; j < 5; j++)
{
if(a[i][j] > max) //更新最大值
{
max = a[i][j];
index_i = i; //更新行坐标
index_j = j; //列坐标待定
}
}
min = a[i][index_j]; //假设当前行中最大数所在列的数为最小值
for(k = 0; k < 4; k++)
{
if(a[k][index_j] < min) //更新最小值
{
min = a[k][index_j];
}
}
if(max == min) //找到鞍点
{
printf("a[%d][%d]是鞍点,元素值为%d。\n", index_i, index_j, max);
flag = 1;
}
}
if(flag == 0) //未找到鞍点
{
printf("该二维数组中不存在鞍点。\n");
}
return 0;
}
在代码中,首先定义一个4行5列的整型二维数组a,然后使用嵌套循环依次输入20个整数。接着,分别以行和列为单位进行查找,使用max变量记录每行中的最大值,使用min变量记录每列中的最小值,如果发现某一个元素既是该行最大值又是该列最小值,则判定为鞍点。如果找到鞍点,则输出其下标值;如果未找到鞍点,则输出提示信息。
阅读全文