求二维数组最大值问题?
#include<iostream>
using namespace std;
void main()
{
int max_value(int x,int max);
int i,j,row=0,colum=0,max;
int a[3][4]={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}};
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
max=max_value(a[i][j],max);
if(max==a[i][j])
{
row=i;
colum=j;
}
}
cout<<"max="<<a[i][j]<<endl;
cout<<"row:"<<row<<endl<<"colum:"<<colum<<endl;
}
int max_value(int x,int max)
{
if(x>max) return x;
else
return max;
}
上面是求二维数组中值最大的那个元素值,并输出该元素所在的行和列。
现在编译结果显示 max=3 显然是错误的 不知道错在哪里了 ;
还有在int max_value(int x,int max)
可以这样定义吗?
{
if(x>max) max=x;
}
求高人指点啊 谢谢
[解决办法]
cout<<"max="<<a[row][colum]<<endl;
[解决办法]
- C/C++ code
cout<<"max="<<a[row][colum]<<endl;//这儿改下,不然i、j一直都是最后一个 cout<<"row:"<<row<<endl<<"colum:"<<colum<<endl;
[解决办法]
不可以,max_value这个函数要有返回值
[解决办法]
哥们,我帮你又调试了一下!
cout<<"max="<<a[i][j]<<endl;
这个语句应该改为
cout<<"max="<<a[row][colum]<<endl;
或者改为
cout<<"max="<<max<<endl;
int max_value(int x,int max)
{
if(x>max) return x;
else
return max;
}
这个函数正确,但不够简洁,可以改为
int max_value(int x,int max)
{
return x>max ? x :max;
}
程序在正确的情况下还讲究效率啊!