C语言编程题,找鞍点

1. 输入一个4行5列的整型数组,求出这个数组的“鞍点”。鞍点是指这个元素在所处的行上最大,列上最小。请输出这个鞍点的位置及鞍点的值。如果没有鞍点,请输出没找到。
例如数组:
2 3 4 5 6
3 4 5 6 8
3 1 2 5 9
3 4 1 8 7
鞍点是:第0行第4列,值为6

#include<stdio.h>

int main()

{

int a[4][4]={{2,3,9,5},{6,7,8,3},{0,5,7,5},{2,1,8,3}};

int i,j,k,i0,j0,find=0;

printf("数组a:\n");

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

   printf("%3d",a[i][j]);

printf("\n");

}

for(i=0;i<4;i++)        //穷举所有的行

{

j0=0;

for(j=1;j<4;j++)

 if(a[i][j]>a[i][j0])j0=j;    //找到第i行上最大的数a[i][j0]

k=1;

for(i0=0;i0<4;i0++)    //对找到的该数穷举所有行

 if(a[i0][j0]<a[i][j0])k=0;    //如它不是本列上最小的数就“一票否决”

if(k)    //若确认是,就输出,并记录已找到

{

 printf("鞍点是:a[%d][%d]=%d\n",i,j0,a[i][j0]);

 find=1;

}

}

if(!find)    //若未找到,则输出提示信息

printf("此数组无鞍点!\n");

return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-01-07

#include<stdio.h>
int
main()
{
int
a[4][4]={{2,3,9,5},{6,7,8,3},{0,5,7,5},{2,1,8,3}};
int
i,j,k,i0,j0,find=0;
printf("数组a:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
 
 printf("%3d",a[i][j]);
printf("\n");
}
for(i=0;i<4;i++)        //穷举所有的行
{
j0=0;
for(j=1;j<4;j++)
 if(a[i][j]>a[i][j0])j0=j;    //找到第i行上最大的数a[i][j0]
k=1;
for(i0=0;i0<4;i0++)    //对找到的该数穷举所有行
 if(a[i0][j0]<a[i][j0])k=0;    //如它不是本列上最小的数就“一票否决”
if(k)    //若确认是,就输出,并记录已找到
{
 printf("鞍点是:a[%d][%d]=%d\n",i,j0,a[i][j0]);
 find=1;
}
}
if(!find)    //若未找到,则输出提示信息
printf("此数组无鞍点!\n");
return
0;
}

第2个回答  推荐于2019-06-29
#include <stdio.h>
#define N 4 //N---多少行//
#define M 5 //M---多少列//
void main()
{
int a[N][M],i,j,t,k,max,min,l=0;
printf("请输入数组:\n");
for (i=0;i<N;i++)
for (j=0;j<M;j++)
scanf("%d",&a[i][j]);
for (i=0;i<N;i++)
{
max=a[i][0];k=0;
for (j=1;j<M;j++)
if (a[i][j]>max)
{
max=a[i][j];k=j;
}
min=a[0][k];
for (t=1;t<N;t++)
if (a[t][k]<min)
min=a[t][k];
if (max==min)
{printf("所要的数在数组中的%d行%d列值为%d\n",i,t,max);l++}
}
if(l==0)
printf("there is no such number.\n");
}本回答被提问者和网友采纳
第3个回答  2018-04-09
a[3][3]=7
第4个回答  2010-04-19
//可以运营;
#include<stdio.h>
#define N 5
#define M 4
void main()
{
int a[M][N]={2,3,4,5,6,
3,4,5,6,8,
3,1,2,5,9,
3,4,1,8,7
};
int column[M],max,min,row[N];
int i,j;
for(i=0;i<M;i++)
{
max=a[i][0];
column[i]=0;
for(j=1;j<N;j++)
if(a[i][j]>max)
column[i]=j; //记录该行最大元素的列标;
}
for(i=0;i<N;i++)
{
min=a[0][i];
row[i]=0;
for(j=0;j<M;j++)
if(a[j][i]<min)
row[i]=j; //记录该列最大元素的列标;
}
for(i=0;i<M;i++)
if(row[column[i]]==i) //如果记录为同一元素,则为暗点;
printf("\nGood %d %d :%5d",i,column[i],a[i][column[i]]);

}
//希望kutpbpb的回答能对你有所帮助!百度地图

本数据来源于百度地图,最终结果以百度地图最新数据为准。

c语言查找二维数组的鞍点 新生求助大佬
C语言查找二维数组的鞍点详细代码如图:具体思路:一、先把每行的最大值求出来×到数组;二、依次遍历每行,如果其值等于最大值,再判断在列中是否最小即可。三、输出结果。

鞍点C语言求鞍点代码
在C语言中,鞍点查找通常用于处理矩阵数据,以寻找具有特定条件的元素对。以下是一个简单的程序,用于在给定的矩阵中查找鞍点。首先,程序定义了几个宏和函数,如Input()、CreatTureMatrix()、Print()和OutPrint(),它们分别用于输入矩阵、创建真值矩阵、打印矩阵和输出鞍点信息。在main()函数中,程序首先...

寻找C语言错误(鞍点)
按你给的鞍点的定义:该位置上的值在 该行中 最大,在 该列中 最小,应当先寻找出每一行的最大值,再判断这个数是不是刚找出最大值所在的列中的最小值。按照你给的测试数据,寻找过程应该如下:1、[0][3] [1][3] [2][3] 这三个为每一行的最大值的下标。2、再在列中分别判断以上三...

C语言编程:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大...
int m, int n);main(){int a[20][20]; \/\/数组储存矩阵int m,n; \/\/分别表示矩阵的行数和列数int i,j; \/\/循环变量\/\/人机交互输入数据printf("Input m,n:\\n");scanf("%d,%d",&m,&n);printf("Input matrix:\\n" );for...

大虾救命,c语言中找鞍点的问题。就一个错。但是,小弟实在无能为力了...
void main(){ int array[100][100],n,m,j,i,k,l,f=0; \/\/按照你这个程序的意思,应该把二维数组定义足够大 保证你输入的 m n 在之内 printf("please input the row:\\n ");scanf("%d",&m);printf("please input the line:\\n ");scanf("%d",&n);printf("please input ...

C语言找鞍点问题?求大神帮助
int main(){ int a[6][6],nn;int i,j,k,i0,j0,find=0;scanf("%d",&nn);for(i=0;i<nn;i++)for(j=0;j<nn;j++)scanf("%d",&a[i][j]);for(i=0;i<nn;i++) \/\/穷举所有的行 { j0=0;for(j=1;j<nn;j++)if(a[i][j]>a[i][j0])j0=j; \/\/找到第i...

用c语言编写一个求鞍点的程序,
先找行上最大的数,再看看在列上是否最小就OK了~参考下面代码 include < stdio.h> define MAX_BUF 300 void func(int *A, int rows, int cols, int* result, int resultsize){ int i,j,tc,flag,cul=0;for(i=0;i<rows;++i){ for(j=0,tc=0;j<cols;++j){ if(*(A+i*cols+j...

请帮忙解释下这个C语言求鞍点的程序,思路是怎样的,详细点。
{ \/\/如果a[i][maxj]是本行最大,本列最小的数,就退出循环 break;} } \/\/如果中途退出了循环,则说明找到了鞍点 if (i < m){ printf("\\nyou an dian, wei: juZhen[%d][%d]=%d\\n", i, maxj, a[i][maxj]);} else { printf("\\nmei you an dian.\\n");} return 1;} ...

找出二维数组中的鞍点,c语言
for(j=0;j<4;j++)if(a[j][n]<min){ min=a[j][n];p=j;} if((p==m)){ printf("鞍点为:%d\\n",a[m][n]);printf("此时m=%d; n=%d\\n",m,n);break;} else if(i>=3)printf("no an dian");} } 已编译出,是正确的,如果哪里不懂,再联系我。希望对你有帮助 ...

c语言 求二维数组的鞍点
} min=array[0][k];for(j=0;j<N;j++)\/\/用行来进行列比较 { if(min>array[k])\/\/若在该列中有更小的,则赋值与min min=array[k];} if(min==max){ printf("小标为%d,%d,鞍点为:%d",i+1,k,max);} } printf("搜索结束\\n");return;} ...

相似回答