c++ 求大神指点 .有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号

#include<stdio.h>
main()
{
int max,i,j,a,b;
static int s[3][4]={{154,88,35,5},{6,4,2,88},{-84,-44,2,47}};
max=s[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(s[i][j]>max)
{
max=s[i][j];
a=i;
b=j;
}
printf("%d,%d,%d\n",max,a,b);
}

max的值能输出 a,b不能 谁能看看哪儿错了

int max,i,j,a,b;没有初始化啊,由于你的max=s[0][0];是最大的if你们的永远不会运行,

于是a,b不会被赋值,报错必然啊。

#include<stdio.h>

int main()

{

  int max,i,j,a,b;

 max=i=j=a=b=0;

 static int s[3][4]={{154,88,35,5},{6,4,2,88},{-84,-44,2,47}};

 max=s[0][0];

 for(i=0;i<3;i++)

  for(j=0;j<4;j++)

   if(s[i][j]>max)

   {

    max=s[i][j];

    a=i;

    b=j;

   }

 printf("%d,%d,%d\n",max,a,b);

}


温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-28
算法有问题,max=s[0][0];要是S[0][0]就是最大值的话,根本不会进到if语句里面,a,b就不会被赋值。可以改成if(s[i][j]>=max)或者在max=s[0][0];后面加上a=0;b=0;
第2个回答  2013-07-28
嗯,他们说的是对的,两个for()循环改为:
for(i=1;i<3;i++)
for(j=1;j<4;j++)
第3个回答  2013-07-28
if(s[i][j]>=max)
相似回答