m0_63753877 2021-11-09 15:50 采纳率: 50%
浏览 60
已结题

以下代码为找到鞍点并输出所在行列,如何更改为找到行中最小,列中最大的值,并输出所在行列

#include<stdio.h>
#define M 3
#define N 4
int main(void)
{
int a[M][N],i,j,k;
printf("请输入二位数组的数据:\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<M;i++)
{
k=0;
for(j=1;j<N;j++)
if(a[i][j]>a[i][k])
k=j;
for(j=0;j<M;j++)
if(a[j][k]<a[i][k])
break;
if(j==M)
printf("%d %d行%d列\n",a[i][j],i,k);

}
 return 0;       

}

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-11-09 15:56
    关注

    你不是写反了吧?
    for(i=0;i<M;i++)是对每一行进行循环
    for(j=1;j<N;j++)循环应该是找出这一行的最小值,但if(a[i][j] > a[i][k]是找最大值啊
    同样
    最后一个for(j=0;j<M;j++)应该是对行最小值所在的列比较它是否为最大值,但if(a[j][k] < a[i][k])判断是找到一个更小的就退出

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 11月9日