盡管示例輸入和輸出匹配,但我收到了這個系結錯誤。我嘗試了幾種方法來解決這個錯誤,但我做不到。請幫助我克服這個問題。還請解釋為什么這個錯誤的主要原因是什么。我的代碼:
#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;
}
樣本輸入:
1 2 3 4
123214
輸出:
13
uj5u.com熱心網友回復:
首先,這是不正確的
int a[4];
for(int i=1; i<=4; i ){
cin >> a[i];
}
C 中的陣列從0開始索引,所以如果你想擁有 a[1] = 1
int a[5];
for(int i = 0; i < 5; i ){
cin >> a[i];
}
邊注。您不需要“查找陣列”。總結數字,你可以這樣做:
sum = (s[i] - '0');
uj5u.com熱心網友回復:
陣列索引從你的情況開始,0所以a[4]超出了范圍。\
既然我們在這里,我建議不要使用 C 陣列。使用std::array或std::vector代替。
此外,最好使用范圍 for。
uj5u.com熱心網友回復:
int a[4];
for(int i=1; i<=4; i ){
變數宣告分配索引 0 到 3(總共 4 個元素),但您嘗試訪問 0 到 4。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/418572.html
標籤:
上一篇:糾結于使用cpp實作選擇排序
下一篇:在C 中重新啟動回圈?
