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