我是KE二森 我是KE二森
关注数: 0 粉丝数: 27 发帖数: 165 关注贴吧数: 12
求助,二维数组鞍点问题 求鞍点,就是行中的最大值,列中的最小值。 代码 //程序名:二维数组求最大最小值,鞍点。 //版本jojo1.0 //功能: 在二维矩阵中,一个元素既是它所在行中的最大值,也是它所在列中的最小值,该点叫做鞍点。编程自动生成并输出 3Ⅹ3 二维矩阵, //要求各元素值的范围为 1~99。输出全部元素中的最大值和最小值、鞍点值,如果没有鞍点,重新构造一个二维矩阵,直到第一次生成鞍点为止。 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> main() { int i,j,m=0,n=0,k=0,max=0,min=0;//定义行,列,最大值,最小值变量。 int a[i][j];//定义数组 printf("请输入行,列"); scanf("%d%d",&m,&n); srand(time(NULL));//定义种子函数 look:for(i=0;i<m;i++)//行循环 { for(j=0;j<n;j++)//列循环 { a[i][j]=abs(rand()%100+1);//随机输出1-100的数 max=(max<a[i][j])?a[i][j]:max;//求最大值 min=(min<a[i][j])?min:a[i][j];//求最小值 printf("a[%d][%d]=%d\t",i,j,a[i][j]);//输出数组 } printf("\n"); } printf("最大值为%d\n最小值为%d\n",max,min);//输出最大,最小值。 int q=0,w=0,l=0,max1,min1;//定义鞍点坐标 for(i=0;i<m;i++) { max1=a[i][0];w=i;q=1;//定义MAX为该行中的最大值 for(j=0;j<n;j++) { if(max1<a[i][j]){max1=a[i][j];q=j;w=i;} } min1=1; for(k=0;k<n;k++) { if(max1>a[k][q]){min1=0;break;} } if(min1==1){printf("鞍点为a[%d][%d]=%d",w,q,max1);l=l+1;} } if(l==0){goto look;} else{return 0;} } 为啥程序输出的有时候是对的,又时候是错的,输出的是列中的最大值,行中的最小值,而且坐标也不对。
1 下一页