C++ 如何通过与c+中的其他项相乘来更新数组项+;

C++ 如何通过与c+中的其他项相乘来更新数组项+;,c++,arrays,C++,Arrays,我想得到的结果是将索引值与其他索引值相乘。e、 g在以下代码中: 我想用arr[0]*arr[1]更新arr[0]值,用arr[9]*arr[9-8]更新arr[9]值,对于其余索引,它将是arr[i-1]*arr[i]*arr[i+1]。它在第一个索引上运行良好,但在其他索引上我得到了意想不到的结果 #include<iostream> using namespace std; int main(){ int arr[10] = {1, 2, 3, 4, 5, 6, 7,

我想得到的结果是将索引值与其他索引值相乘。e、 g在以下代码中: 我想用arr[0]*arr[1]更新arr[0]值,用arr[9]*arr[9-8]更新arr[9]值,对于其余索引,它将是arr[i-1]*arr[i]*arr[i+1]。它在第一个索引上运行良好,但在其他索引上我得到了意想不到的结果

#include<iostream>
using namespace std;

int main(){
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, j, k;
    
    for(j = 0; j < 10; j++){
        if(j == 0){
            arr[j] = arr[j] * arr[j + 1];
        }else if(j == 9){
            arr[j] = arr[j] * arr[j - 1];
        }else{
            arr[j] = arr[j - 1] * arr[j] * arr[j + 1];
        }
    }
    
    for(k = 0; k < 10; k++){
        cout<<arr[k]<<" ";
    }
}
#包括
使用名称空间std;
int main(){
int-arr[10]={1,2,3,4,5,6,7,8,9,10},j,k;
对于(j=0;j<10;j++){
如果(j==0){
arr[j]=arr[j]*arr[j+1];
}else如果(j==9){
arr[j]=arr[j]*arr[j-1];
}否则{
arr[j]=arr[j-1]*arr[j]*arr[j+1];
}
}
对于(k=0;k<10;k++){

cout您需要将结果存储在一个单独的数组中,否则将覆盖用于未来计算的同一数组中的值

在您的情况下,当
j==0
时,您会:

arr[0] = arr[0] * arr[1]; // 1 * 2 = 2
所以
arr[0]
现在是
2
。然后你就可以了

arr[1] = arr[0] * arr[1] * arr[2]; // 2 * 2 * 3 = 12, not 1 * 2 * 3 = 6
…以此类推。如果将结果存储在单独的数组中,则该问题将消失。例如:

#包括
//使用名称空间std;//不要使用此名称空间。
int main(){
int-arr[10]={1,2,3,4,5,6,7,8,9,10};
int res[10]={0};
对于(int j=0;j<10;j++){
如果(j==0)
res[j]=arr[j]*arr[j+1];
else如果(j==9)
res[j]=arr[j]*arr[j-1];
其他的
res[j]=arr[j-1]*arr[j]*arr[j+1];
}
对于(int k=0;k<10;k++)

std::数字是否会越来越大并在某一点溢出。如果在每次迭代中打印整个数组,您将看到它。您的预期结果是什么请描述为什么输出是意外的。2=1*2,12=2*2*3,144=12*3*4,2880=12*144*5,…。这就是我预期的结果。预期结果:2 6 24 60 120 336 504 720 90您正在更改数组中的值,并使用新值计算下一个值。您需要数组的副本。请告诉我为什么不使用(命名空间std)。出现问题了吗?@Shakir当然,这里有一系列原因:@Shakir你了解程序中发生的事情的原因了吗?请询问我是否需要进一步澄清。我刚刚了解。谢谢!@Shakir我已经看到了大约20个关于堆栈溢出的问题,描述了使用命名空间std;
引起的不同问题。
。如果您不知道该命名空间导入的所有名称,则不应使用它。在
使用命名空间std;
后,您不应为函数或变量使用
开始
结束
数据
交换
数组
向量
列表
,…等名称,因为它们是你已经在使用了。
2 6 24 60 120 210 336 504 720 90