首页 > 解决方案 > 为什么我得到这个 C++ 代码的错误输出?(hackerrank的问题之一)

问题描述

这是打印数组元素总和的程序。它显示运行时错误。输出结果为 0,而不是打印出元素的总和。

#include<iostream.h>
using namespace std;
void simpleArraySum()   
{
    int ar[100],n,i,sum=0;

    for(i=0;i<n;i++)
    {
        sum=sum + ar[i];
    }

    cout<<sum;
}
int main()
{
    int ar[100],n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>ar[i];
    }

    simpleArraySum();
    return 0;
}

标签: c++algorithmc++11

解决方案


在你主要的这一行:

int ar[100], n;

您创建一个包含 100 个元素的数组。您稍后使用cin

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

然后你对那个数组什么都不做。你没有计算任何总和。你让那个阵列走了,忘记了。

然后,您调用一个simpleArraySum函数。该函数正在创建一个全新的、不同的数组

//  v-----v------There
int ar[100],n,i,sum=0;

该数组没有分配任何值。实际上,从中读取是未定义的行为。

您想要的是在函数的参数中接收该数组:

void simpleArraySum(int* ar, int n) {
    // ...
}

并在你的主目录中这样称呼它:

simpleArraySum(ar, 100);

推荐阅读