**C++** 一维数组的值怎么写?

题目描述
创建一个包含 n 位正整数的一维数组,规定这样计算它的值:数组的第一位数乘 1,第二位数乘 2,第三位数乘 3,第四位乘 4,第五位乘 1,第六位乘2,第七位乘3,第八位乘4,以此类推,最后将相乘的结果加起来就是数组的值.

输入描述
包括两行,第一行输入一个正整数n,第二行包括n个整数,以空格间隔。

输出描述
包括一行,一个整数,表示数组的值

样例1
输入
10
1 2 3 4 5 6 7 8 9 10
输出
129
提示
对于100%的数据,其中 n<=100,1<=每个数字<=100。

#include 
using namespace std;
int main() {
    int n,b;
    cin>>n;
    int a[n];
    for(int i=0;i>a[i];    
    }
    for(int i=;i;i++) 
    {
            
    }
    return 0;
}

怎么写?


#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int arr[n];
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }

    int sum = 0;
    for (int i = 0; i < n; i++) {
        if ((i + 1) % 4 == 1) {
            sum += arr[i];
        } else if ((i + 1) % 4 == 2) {
            sum += 2 * arr[i];
        } else if ((i + 1) % 4 == 3) {
            sum += 3 * arr[i];
        } else if ((i + 1) % 4 == 0) {
            sum += 4 * arr[i];
        }
    }

    cout << sum << endl;

    return 0;
}

该回答引用ChatGPT


#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int a[n];
    for(int i=0; i<n; i++) {
        cin >> a[i];
    }

    int sum = 0;
    for(int i=0; i<n; i++) {
        if((i+1)%4 == 1 || (i+1)%4 == 2) {
            sum += a[i] * (i%4 + 1);
        } else {
            sum += a[i];
        }
    }

    cout << sum << endl;

    return 0;
}

首先输入数组的长度n和n个整数,然后按照题目要求计算数组的值,即按照规律将每个元素与对应的系数相乘,然后加起来得到数组的值。规律是:数组的第一位数乘 1,第二位数乘 2,第三位数乘 3,第四位乘 4,第五位乘 1,第六位乘2,第七位乘3,第八位乘4,以此类推。

代码中使用了一个for循环,首先根据数组的长度创建一个数组a,然后读入n个整数存储到数组a中。然后在第二个for循环中,根据规律计算数组的值,根据元素在数组中的下标来确定对应的系数。最后输出数组的值。

例如,对于样例输入,数组的值为 1×1+2×2+3×3+4×4+5×1+6×2+7×3+8×4+9×1+10×2=129,所以输出129。

自己写的

#include <iostream>
using namespace std;
int main() {
    int n,b;
    cin>>n;
    int a[n],sum=0;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];    
    }
    for(int i=0;i<n;i++) 
    {
          sum+=(i%4+1)*a[i];   
    }
    cout<<sum<<endl;
    return 0;
}