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

2025-05-09 13:24:56
推荐回答(5个)
回答1:

#include 

using namespace std;

int main()

{

int a[3][4];

int max,k1=0,k2=0;

int i;

int j; 

cout<<"请输入十二个元素"<

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<

 return 0;

}

回答2:

{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<}

回答3:

#include
using namespace std;
int main()
{
int a[3][4];
int max = -999;//给max一个很小的初值
int c;//定义一个变量用来存储最大值的行
int d;//定义一个变量用来存储最大值的列
cout<<"请输入十二个元素,输入一个数字后按Enter键再输入下一个"<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<//把记住的最终的行、列输出来
return 0;
}

回答4:

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

回答5:

max=a[0][0];写在循环里面,就每次执行循环都会重新把a[0][0]的值覆盖掉原来已取得值较大的结果。