我是 C 新手,無法理解這里有什么問題。此代碼是針對 CodeForces 的問題 339A 制作的。
我得到一個未排序的 sum str 輸入,其中包含 1-3 的數字(例如 1 2 3 2 1)。
我試圖找到每個數字的總出現次數,但是當嘗試對陣列的索引求和時,它只是溢位或給了我一個不相關的數字。
為什么會這樣?
例子
Input: 1 2 3 2 1
Output of array: [0, -13008, 5]
我有以下代碼:
#include <iostream>
using namespace std;
int main(){
string s;
int arr[3];
cin >> s;
for(int i=0; i<s.size(); i = 2){
if(s[i] == 1){
arr[0] = 1;
}
else if(s[i] == 2){
arr[1] = 1;
}
else{
arr[2] = 1;
}
}
...
uj5u.com熱心網友回復:
對于初學者,您需要初始化陣列
int arr[3] = {};
你需要比較字符,例如
if(s[i] == '1'){
如果您確定s[i]僅包含字符“1”-“3”,那么您可以撰寫例如而不是 if 陳述句
arr[s[i] - '1'];
或者你可以只使用一個 if 陳述句
if ( '1' <= s[i] && s[i] <= '3' )
{
arr[s[i] - '1'];
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/515294.html
標籤:C 数组for循环if 语句字符
