main()
{int a[3][4],x,y,max[3],max1;
for(x=0;x<=2;x++)
for(y=0;y<=3;y++)
scanf("%d,%d",&a[x][y]);
for(x=0;x<=2;x++)
for(y=0;y<=3;y++)
{if(a[x][y]<a[x][y+1])
max[x]=a[x][y+1];
else max[x]=a[x][y];
}
for(x=0;x<=2;x++)
{if(max[x]<max[x+1])
max1=max[x+1];
else max1=max[x];
}
printf("%d",max1);
getch();
}
----------------解决方案--------------------------------------------------------
getch()后面的分号是中文的,改成英文之后编译通过
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
参考下这个:有一个3×4的矩阵,要求编程序以求出其中值最大的那个元素的值及其所在的行号和列号。
#include <stdio.h>
void main ()
{
int i,j,row=0,colum=0,max;
static int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max = a[0][0];
for(i=0; i<=2; i++)
for(j=0; j<=3; j++)
if (a[i][j] > max )
{ max = a[i][j];
row = i;
colum = j;
}
printf("max=%d, row=%d, colum=%d\n",max,row,colum);
}
----------------解决方案--------------------------------------------------------
楼主的逻辑不好啊,
for(x=0;x<=2;x++)
for(y=0;y<=3;y++)
{if(a[x][y]<a[x][y+1])
max[x]=a[x][y+1];
else max[x]=a[x][y];
这样会产生数组越位的吧
----------------解决方案--------------------------------------------------------
楼主的逻辑不好啊,
for(x=0;x<=2;x++)
for(y=0;y<=3;y++)
{if(a[x][y]<a[x][y+1])
max[x]=a[x][y+1];
else max[x]=a[x][y];
这样会产生数组越位的吧
没错,当Y=3时,a[x][y+1]出错
----------------解决方案--------------------------------------------------------
谢谢各位给我的宝贵意见,我还会仔细研读一下的,我不太明白,为什么会产生数组越位呢,能解释一下吗?
----------------解决方案--------------------------------------------------------
当y=3的时候,a[x][3+1] = a[x][4]
而你的数组a是规定为a[3][4]的,意思也就是 a[0~2][0~3]
现在你的a[x][4] 4很明显就超过了0~3这个范围,所以说你有数组越位
----------------解决方案--------------------------------------------------------
哦,谢谢了,我调整一下啊,还有其它问题吗?
----------------解决方案--------------------------------------------------------
这个应该是你来发现的啊
你认为你在用的时候有什么不对呢?自己再想想为什么,然后再问问看看是不是想的和大家说的一样
----------------解决方案--------------------------------------------------------