如何更改二维数组中的值?

How to change values in a 2-dimensional array?

本文关键字:何更改 二维数组      更新时间:2023-10-16

>我有一个简单的程序来查找两个数字的较大数量并将它们存储在数组的第一行中。

数组是 arr[tot][2],我想将 arr[tot][0] 中的每个元素与 arr[tot][1] 中的元素进行比较,但它给了我无效的数组分配。 我应该使用哪个函数/方法来做到这一点?

for(i=0;i<tot;i++)
{
if(arr[i,1]>arr[i,0])
{
arr[i,0]=arr[i,1]}
}

完整程序

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
//Input
int tot = 23;
int arr[tot][2] = {
{9272992,-5268711},
{-6457223,-8368810},
{-3415057,-2776446},
{-6492757,-3453386},
{4313482,4783138},
{5573672,8360909},
{-2546018,2224083},
{1267093,4700254},
{6136723,9042717},
{1277125,2796189},
{-2062877,2036481},
{6089545,-6182241},
{-8795303,6074456},
{8152425,785931},
{-5134200,4319924},
{6820437,-5861208},
{9051213,-9636786},
{-4230018,-4363843},
{-2413233,-722776},
{2182770,-8099750},
{-5939638,-2243558},
{-9738840,1514344},
{9980524,1528253}
};

//the comparing
int i;
for(i=0;i<tot;i++)
{
if(arr[i,1]>arr[i,0])
{
arr[i,0]=arr[i,1]
}
}
for(i=0;i<tot;i++)
{
cout<<arr[i,0]<<" ";
}
return 0;
}

感谢您回答我的问题:)也感谢您的反对票,这真的帮助我理解这里只允许聪明和高级的问题,不欢迎愚蠢的错误和语法错误。

@songyuanyao的评论是正确的。如果要访问 2D 数组中的值,则需要使用arr[i][0]

您的代码有三个错误:

  1. 声明数组时,元素数必须是常量。所以int tot = 23;应该const int tot = 23;

  2. arr[i,0]是一个有效的表达式,但不应在此处使用。您应该在整个程序中使用语法arr[i][0]

  3. 您错过了一个分号。

#2的一些解释:错误"数组分配无效"是由于行arr[i,0]=arr[i,1](您在这里也错过了;(。在arr[i,0]中,逗号是一个逗号运算符,它返回第二个操作数的值。所以arr[i,0]等价于arr[0],它是一个一维数组。同样arr[i,1]arr[1],这也是一个一维数组。但是数组不是可修改的 L 值,因此arr[i,0]=arr[i,1]给出"数组分配无效"错误。这也解释了为什么arr[i,1]>arr[i,0]没有给出编译时错误,但它是一个运行时错误。

不要使用此语法

if(arr[i,1]>arr[i,0])
{
arr[i,0]=arr[i,1]
}

相反,请尝试使用这个:

if(arr[i][1]>arr[i][0])
{
arr[i][0]=arr[i][1]
}