c++ - 为什么我得到这个 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;
}
解决方案
在你主要的这一行:
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);
推荐阅读
- c++ - ““make: *** [executable] Error 1”是什么意思?
- javascript - 如何在 iFrame 上使用 postMessage
- javascript - while reseting my firebase database for the profiler by using firebase init, my whole html webpack plug in broke
- ibm-mobilefirst - when I try to invoke MFP adapter from Android Emulator getting the below error
- java - 创建表时SQLite DB错误的名称列
- php - 我可以在 Angular 应用程序中放置 PHP 文件吗?
- css - Style a TextInput on React Native every time it is focused
- c++ - What does using the negation operator in front of objects in c++ do?
- angular - 使用自己的数据更新 BehaviorSubject
- javascript - HTML/CSS: What is the right way to make sticky menus?