如下:若输入的为3×3的数组1 2 3 4 5 6 7 8 9则运行出错,若9 8 7 6 5 4 3 2 1则可运行成功
#include<stdio.h> //先找列最小,再找行最大 int main() { int m,n; int i,j; scanf("%d%d",&m,&n);//m行n列数组 int a[m][n]; for(i=0;i<m;i++)//输入二维数组 { for(j=0;j<n;j++) { scanf("%d",&a[i][j]); } } printf("\n"); for(i=0;i<m;i++)把数组元素排列好输出 { for(j=0;j<n;j++) { printf("%d ",a[i][j]); } printf("\n"); } printf("\n\n"); int min,max;//列最小,行最大 int mm,nn; int flag=1; for(i=0;i<n;i++) { min=a[0][i]; for(j=1;j<m;j++) { if(min>a[j][i])//找出列最小,并标记为mm行nn列 { min=a[j][i]; mm=j;nn=i; } } max=min;//将列最小当作行最大 for(j=1;j<n;j++)//用列最小做行的比较,找出行最大 { if(max<a[mm][j]) { flag=0; continue; } } if(flag==1) { printf("鞍点是第%d行%d列的%d\n\n",mm+1,nn+1,max); break; } } if(flag==0) printf("没有鞍点\n\n"); return 0; }
建议你调试
Sign in to make a reply
枯鱼.
如下:若输入的为3×3的数组1 2 3 4 5 6 7 8 9则运行出错,若9 8 7 6 5 4 3 2 1则可运行成功