C语言编程题,找鞍点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

参考技术A

#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;

参考技术B #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");
本回答被提问者和网友采纳
参考技术C a[3][3]=7 参考技术D //可以运营;
#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语言查找二维数组的鞍点 新生求助大佬

对于给定的整数矩阵A[5,5],设计算法查找出所有的鞍点。
提示:鞍点的特点:列上最小,行上最大。

输入格式:
输入5行5列整数,同行数据间以空格为间隔。

输出格式:
在一行中以以下格式输出矩阵中的所有鞍点,每个鞍点的显示格式为:
[<鞍点的行坐标>,<鞍点的列坐标>,<鞍点的值>]

输入样例:
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 8
15 10 11 20 25
结尾无空行
输出样例:
[3,0,8][3,4,8]
结尾无空行

C语言查找二维数组的鞍点详细代码如图:

具体思路:

一、先把每行的最大值求出来×到数组;

二、依次遍历每行,如果其值等于最大值,再判断在列中是否最小即可。

三、输出结果。

参考技术A

#include <stdio.h>

int main()

int i,j,min,max,m=5,n=5,found=0;

  int a[5][5],h[5],l[5];

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

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

      scanf("%d",&a[i][j]);

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

  h[i]=a[i][0];

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

      if(a[i][j]>h[i])

        h[i]=a[i][j];

  //找出每行最大值

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

  l[j]=a[0][j];

    for(i=1; i<m; i++)

      if(a[i][j]<l[j])

        l[j]=a[i][j];

  //找出每列最小值

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

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

      if(l[j]==h[i])

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

         found=1;

       

  //进行比较,若行最小与列最大相等,则输出

  if(!found)printf("没有鞍点");

本回答被提问者采纳
参考技术B 开两个数组,一个数组存每一行的最大值,一个数组存每一列的最小值。先扫两遍矩阵把这两个数组计算出来,然后再扫一遍检查矩阵中每个元素是否同时等于其所处列的最小值与所处行的最大值,如果是就是鞍点,这样就行了吧。

以上是关于C语言编程题,找鞍点的主要内容,如果未能解决你的问题,请参考以下文章

c语言问题 找矩阵中的鞍点

c语言查找二维数组的鞍点 新生求助大佬

c语言编程 求鞍点

二维数组找鞍点

第四周编程总结

PTA——找鞍点