求用c++解决数组相关的问题

在由n个整数元素组成的数组中,计算位于第一个和最后一个零元素之间的数组元素之和

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

#include <stdio.h>
int main()
{
    int n;
    // 输入数量
    printf(" input n:");
    scanf("%d", &n);
    // 输入每个数字
    int* arr = new int[n];
    for (int i = 0; i < n; i++)
    {
        printf("input idx %d:", i);
        scanf("%d", &arr[i]);
    }
    // 计算第一个和最后一个0元素之间的数组元素之和
    int total = 0;
    int firstZeroIdx = -1;    // 第一个0元素的下标
    int endZeroIdx = -1;    // 最后一个0元素的下标
    // 找到第一个0和最后一个0
    for (int i = 0; i < n; i++)
    {
        if (arr[i] == 0)
        {
            if (firstZeroIdx < 0)
            {
                firstZeroIdx = i;
            }
            endZeroIdx = i;
        }
    }
    printf("idx: start:%d, end:%d \n", firstZeroIdx, endZeroIdx);
    // 有效的下标才计算
    if (firstZeroIdx >= 0 && endZeroIdx >= 0)
    {
        for (int i = firstZeroIdx+1; i < endZeroIdx; i++)
        {
            total = total + arr[i];
        }
    }
    else
    {
        // 无效下标
        printf("err Idx!!! \n");
        return;
    }
    // 打印结果
    printf("total:%d", total);
    
}



#include <stdio.h>
#include <iostream>
using namespace std;
int fun(int *p,int n);
int main(){
    int a[100],i = 0;
    char c;
    cout << "请输入一个数组用空格隔开: " << endl;
    while(cin >> a[i++]){
        c = getchar();
        if(c == '\n'){
            break;
        }
    }
    printf("%d",fun(a,i));
    return 0;
}

int fun(int *p,int n){
    int i,a = 0,b = 0,sum = 0;
    for(i = 0;i < n;i++){
        if(p[i] == 0){
            a = i;
            break;
        }
    }
    for(i = n-1;i >= 0;i--){
        if(p[i] == 0){
            b = i;
            break;
        }
    }
    for(i = a;i <= b;i++){
        sum += p[i];
    }
    return sum;
}

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<string>
#include<ctime>
#include<clocale>
using namespace std;
int n,a,s;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a;
        if(i==1)s=a;
        if(i==n)s=s+a;
    }
    cout<<s; 
    return 0;
}

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    int n;
    std::cin >> n;
    std::vector<int> array(n);
    for (int i = 0; i < n; i++)
        std::cin >> array[i];
    auto itr1 = std::find(array.begin(), array.end(), 0);
    auto itr2 = std::find(array.rbegin(), array.rend(), 0);
    auto index1 = std::distance(array.begin(), itr1);
    auto index2 = std::distance(itr2, array.rend());
    int sum = 0;
    for (int i = index1 + 1; i < index2; i++)
        sum += array[i];
    std::cout << sum << std::endl;
}