发布网友 发布时间:2022-05-13 07:01
共5个回答
热心网友 时间:2024-02-21 05:49
#include <iostream>
using namespace std;
int main()
{
int a[3][4];
int max,k1=0,k2=0;
int i;
int j;
cout<<"请输入十二个元素"<<endl;
for( i=0;i<3;i++)
for( j=0;j<4;j++)
cin>>a[i][j];//先输入数据
max=a[0][0];
for( i=0;i<3;i++)//输入完数据后再比较
for( j=0;j<4;j++)
if(a[i][j]>max)
{
max=a[i][j];
k1=i+1;//记下最大值的下标
k2=j+1;
}
cout<<max<<"它在第"<<k1<<"行"<<"第"<<k2<<"列"<<endl;
return 0;
}
热心网友 时间:2024-02-21 05:50
{int m=0,n=0;/*定义和循环变量不同的变量,表示最大值的位置,避免反复查找 */追答如果不定义变量表示max 的位置,那么只能找到
max 的数值。
i, j 是循环变量,必定要找完每一个元素,才能得到最大值。
最后必然会有
i==3;j==4;
只有当这个时候循环才会结束。
max 的位置信息,在这个过程中就丢失了。
反复查找:
只有再比较一下哪个元素的值,等于max 才能知道,最大值在哪个位置。
这第二次查找就是反复查找;
这其实和C++关系不大,这是数学问题。
只有一个一个比较,才知道谁最大,只有记录才能够得到位置。不然
循环变量会达到他的最大值,每一个元素都有可能是最大值。
不可能一定是a[2][3];i=2;j=3;
循环退出时 i=3,j=4
for( i=0;i----e2==0-->---+
| | |
| | e2!=0 |
| V |
^ [ s ] |
| [ e3 ] |
| | |
+ -------------+ V
|
+-------------------------+
|
V
[ 结束 ]
热心网友 时间:2024-02-21 05:50
#include <iostream>热心网友 时间:2024-02-21 05:51
看不懂你为什么每次进入第二层循环的时候为什么都要把二维数组第一个元素赋值给max,这样你只是把二维数组第一个数和最后一个数比较而已啊,(我觉得是这样的),还有弄不懂为什么你在最后还要把i和j加1跳出循环的时候他们已经加了啊,你是不是觉得数组从零开始就一定会少1?不是有++吗?热心网友 时间:2024-02-21 05:51
max=a[0][0];写在循环里面,就每次执行循环都会重新把a[0][0]的值覆盖掉原来已取得值较大的结果。