找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。用scanf函数从键盘输入数组各元素的值,检查结果是否正确。
输出结果本应为 96。
你每次外循环开始max和 min都要重新设置为 max=-1e6; min=1e6;
int a[x][y]; //要在x,y输入了值之后再用于声明数组大小
#include<stdio.h>
int main()
{
int i=0,j=0,k=0,p=0,max=-1e6,min=1e6;
int q=0,m=0;
int x=0,y=0;
printf("输入行数和列数:");
scanf("%d%d",&x,&y);
int a[x][y]; //要在x,y输入了值之后再用于声明数组大小
for(i=0;i<x;i++)
for(j=0;j<y;j++)
scanf("%d",&a[i][j]);
for(i=0;i<x;i++){
max=-1e6; //每次外循环开始max和 min都要重新设置为 max=-1e6; min=1e6;
min=1e6;
for(k=0;k<y;k++)
if(a[i][k]>max)
{max=a[i][k];p=k;}
for(m=0;m<x;m++)
if(a[m][p]<min)
{min=a[m][p];q=m;}
if(a[q][p]==a[i][p]) printf("第%d行有鞍点%d\n",i+1,a[i][p]);
else printf("第%d行没有鞍点\n",i+1);
}
return 0;
}
如有帮助,望采纳!谢谢!