#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include<string.h>
/*
87 90 110 98
70 97 210 65
99 45 120 30
*/
int main()
{
int a[3][4];
int i,j,k,isfind,m=0;//m是判断是否有没有鞍点的
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
}
//先找每一行对应最大的值
//因此我们要定义一个变量max
int max;
for(i=0;i<3;i++)
{
isfind=1;
max=a[i][0];//一般设有初始值的都是为了让他去比较而不是a[i][0];
for(j=0;j<4;j++)
{
if(max<a[i][j])
{
max=a[i][j];
k=j;
}
//找到该数对应的列数,因为j会变,所以要记录这个数
//此时找到了最大值
}
//找到对应列数的最小值
for(j=0;j<3;j++)
{
if(a[j][k]<max)
{
isfind=0;
break;
}
}
if(isfind==1)
{
m=1;
printf("%d",a[i][k]);
}
}
if(m==0)
{
printf("NO");
}
}
在第27行,你要让k=0,不然这组数据过不了。
100 101 102 103
90 80 70 60
200 300 400 500
因为如果k没有设初值,则k可能为上一次选到的。如果当前没有a[i][j]比a[i][0]大,则k就是上一次的值,不一定为0。
所以k要设一个初值
if(max<a[i][j])
{
max=a[i][j];
}
k=j;
改为
if(max<a[i][j])
{
max=a[i][j];
k = j;
}
是逻辑错误还是语法错误