输入一个二维整数数组(n行, m列),则该二维整型数组中可能存在以下特征的数组元素:它在其所在的行中值是最大的,它在其所在的列中的值是最小的。

1、题目内容

编写一个C程序,实现以下功能:
输入一个二维整数数组(n行, n列),则该二维整型数组中可能存在以下特征的数组元素:它在其所在的行中值是最大的,它在其所在的列中的值是最小的。
如果数组中存在这样的数组元素,请输出该元素的行号和列号;如果数组中不存在这样的数组元素,则输出“不存在该特征的元素”。

2、题目浅度解析

1.用户确定列数和行数,并使用数组将所有元素保存
2.找出每一行的最大值元素,然后判断该元素是否为该列元素的最小值,如果是就将元素输出,并跳出循环,如果不存在输出不存在该元素
3.使用for循环进行比较

3、源代码及深度解析

#include <stdio.h>
#define N 10
void main()
{
    
    
 int n,i,j;
 int a[N][N];
 void search(int (*p)[N],int n);
 printf("输入方阵的阶数:");
 scanf("%d",&n);
 printf("输入方阵的数据(%d个):",n*n);
 for (i = 0;i <= n - 1;i++)
 {
    
    
  for (j = 0;j <= n - 1;j++)
  {
    
    
   scanf("%d",&a[i][j]);
  }
 }
 search(a,n);
}
void search(int(*p)[N], int n)
{
    
    
 int i, j,maxi=0,maxj=0,pd=0;
 for (i = 0;i <= n - 1;i++)
 {
    
    
  for (j = 0;j <= n - 1;j++)
  {
    
    
   if (p[i][j] > p[i][maxj])
   {
    
    
    maxi = i;
    maxj = j;
   }
  }
  for (i = 0;i <= n - 1;i++)
  {
    
    
   if (p[maxi][maxj] > p[i][maxj])
   {
    
    
    pd = 1;
    break;
   }
  }
  if (pd == 0)
  {
    
    
   printf("鞍点的行为:%d 列为:%d", maxi, maxj);
   break;
  }
 }
 if (pd != 0)
 {
    
    
  printf("NO");
 }
}  

4、代码输出结果

输入方阵的阶数:3
输入方阵的数据(9个):1 2 3 4 5 6 7 8 9
鞍点的行为:0 列为:2

猜你喜欢

转载自blog.csdn.net/weixin_48342617/article/details/109703671