问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++程序,为什么声明了i,j,max是全局变量,for 语句里赋了初值,最后输出的乱七八糟的

发布网友 发布时间: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=a[0][0];/* 这条语句要写在循环外边,或者初始化表达式中 */
for( i=0;i<3;i++){
for( j=0;j<4;j++){
cin>>a[i][j];
/*max=a[0][0]; 谁告诉你这条语句要写在循环与据内部的 */
if(a[i][j]>max){
max=a[i][j];m=i;n=j;
}
}
}

cout<<max<<"它在第"<<m+1<<"行"<<"第"<<n+1<<"列"<<endl;
}追问max的问题我懂了,那i,j为什么不行啊,为什么要再定义与循环变量不一样的量呢?什么叫反复查找啊?求解释,谢谢。。。我这学期才开的C++课,学的糊里糊涂的。。。。

追答如果不定义变量表示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>
using namespace std;
int main()
{
int a[3][4];
int max = -999;//给max一个很小的初值
int c;//定义一个变量用来存储最大值的行
int d;//定义一个变量用来存储最大值的列
cout<<"请输入十二个元素,输入一个数字后按Enter键再输入下一个"<<endl;
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
cin>>a[i][j];
if(a[i][j]>max)
{
max=a[i][j];//如果输入的值比max当前值大,记住这个值
c = i;//记住这一行
d = j;//记住这一列
}
}
}
cout<<max<<"它在第"<<c+1<<"行"<<"第"<<d+1<<"列"<<endl;
//把记住的最终的行、列输出来
return 0;
}

热心网友 时间:2024-02-21 05:51

看不懂你为什么每次进入第二层循环的时候为什么都要把二维数组第一个元素赋值给max,这样你只是把二维数组第一个数和最后一个数比较而已啊,(我觉得是这样的),还有弄不懂为什么你在最后还要把i和j加1跳出循环的时候他们已经加了啊,你是不是觉得数组从零开始就一定会少1?不是有++吗?

热心网友 时间:2024-02-21 05:51

max=a[0][0];写在循环里面,就每次执行循环都会重新把a[0][0]的值覆盖掉原来已取得值较大的结果。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
保险跟理财有什么不同 轻度半月板损伤能步行吗 半月板损伤无法走路是怎么回事 设计院协同设计 易燃品易燃品定义 助力车办驾驶证年龄限制是几岁? 什么叫用信额度 信贷额度什么意思 什么叫信贷额度 超出信贷额度什么意思 美缝剂多少钱一瓶?哪种美缝剂效果好? 美缝剂多少钱一瓶?美缝剂十大排名?如何采购美缝剂? 美缝剂多少钱一瓶?购买哪一种比较好 分居10多年双方财务自主,离婚时财产如何分割? 美缝剂多少钱一只 夫妻分居离婚财产如何分配 美缝剂价位怎么样? 美缝剂品牌推荐 夫妻在分居后买房如果离婚房产如何分割? 美缝剂什么牌子最好 美缝剂的价格 分居三年离婚房产怎么分配 昨晚睡觉时,向左侧睡,发现心脏跳动很明显,然后早上起来,用手摸心脏位置,没感觉到有心跳。。。 心跳快?不舒服,求解. 睡觉时,有时左侧睡时间长了,突然平躺过来,或者撑懒腰时,心跳突然加快,请问是什么原因? 为什么侧着睡觉会感觉心跳加快 - 信息提示 - 信息提示 - 信息提示 我骑电动车在非机动车道行驶在红绿灯口被未打左转向灯的机动机动车道撞了,我有责任吗? 两个绑定了同一个qq号,按说不可能的,但事实就是这样了。能注销其中一个吗? 汽车没打转向灯导致电动车摔倒 杭电1042 编程,请教 批处理把当前文件夹里的*.max文件,以当前文件夹名字命名。 这个怎么做 c语言求矩阵最大值指针与数组 谢谢大佬 一个确定位置的代码,用a[i][j]和max比较,max=a[0][0];是什么意思啊,菜鸟 不懂。。 沈阳的谁去过铁西的J-MAX密室逃脱,怎么样?好玩嘛? [z,j]=max(d,[],2);什么意思 拳皇97的MAX状态时什么意思啊,怎么调阿 3DMAXJ激活码 c[i][j]=INT_MAX这句代码是什么意思 java中数组作为函数参数的问题,下面是我的代码,为啥数组max和min没传进去啊,求大神指点一下 LstPath.RemoveAt(MaxI &gt; MaxJ ? MaxI : MaxJ);这句话表达什么意思 2020国庆晚会和中秋晚会观后感? C++ max函数 《国庆节目》观后感作文 #include &lt;stdio.h&gt; #define MAX 4 main() { int max=1,length[MAX],k,count=0; long int i[MAX],j[MAX],nu 超级机器人大战j雷兹纳能有v-max临界吗 怎样给60岁左右的老年人买保险60岁以上老人保险 国庆节目观后感400字