首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >该解决方案在第7行执行时出现错误“越界”。

该解决方案在第7行执行时出现错误“越界”。
EN

Stack Overflow用户
提问于 2022-01-22 07:17:12
回答 3查看 87关注 0票数 -2

通过示例输入和输出匹配,我已经收到了这个绑定错误。我尝试了几种方法来解决这个错误,但我做不到。请帮助我克服这个问题。还有,请解释一下原因?造成这一错误的主要原因是什么?我的代码如下:

代码语言:javascript
复制
#include <iostream>
using namespace std;

int main(){
    int a[4];
    for(int i=1; i<=4; i++){
        cin >> a[i];
    }
    string s;
    cin >> s;

    int sum = 0;
    for(int i =0; i<s.size(); i++){
        if(s[i]=='1'){
            sum=sum+a[1];
        }
        else if(s[i]=='2'){
            sum+=a[2];
        }
        else if(s[i]=='3'){
            sum+=a[3];
        }
        else if(s[i]=='4'){
            sum+=a[4];
        }
    }
    cout << sum << endl;
}

样本输入:

代码语言:javascript
复制
1 2 3 4
123214

输出:

代码语言:javascript
复制
13
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-01-22 07:22:59

数组索引从0开始,所以在您的情况下,a[4]是越界的。

既然我们在这里,我建议不要使用C数组。使用std::arraystd::vector代替。

另外,最好使用范围为

票数 1
EN

Stack Overflow用户

发布于 2022-01-22 07:29:36

首先,这是不对的

代码语言:javascript
复制
int a[4];
for(int i=1; i<=4; i++){
    cin >> a[i];
}

C++中的数组是从0索引的,所以如果您想拥有a[1] = 1,应该是索引数组。

代码语言:javascript
复制
int a[5];
for(int i = 0; i < 5; i++){
    cin >> a[i];
}

旁注。你不需要“查找数组”。要将数字之和,只需:

代码语言:javascript
复制
sum += (s[i] - '0');
票数 1
EN

Stack Overflow用户

发布于 2022-01-22 07:24:51

代码语言:javascript
复制
int a[4];
    for(int i=1; i<=4; i++){

a的变量声明将索引0分配给3(4个元素总计),但是您正在尝试通过i访问0到4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70810775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档