【PAT乙级 C++】1052 卖个萌 (20 分)

鬼题不难坑还多,浪费我好多时间,气死了
为什么以char形式单独打印这些表情字符会打印出乱码,本来算法一点没错,我先打印单个字符测试一下,竟然输出乱码,害我调试了好久,结果啥错都没有。
感觉应该是表情字符不在ASCII码的范围中导致单个字符乱码,讨厌死了,哼╭(╯^╰)╮

# include <iostream>
# include <vector>
using namespace std;

vector<string> Symbol[3];

int main(){
    
    
    for(int i = 0;i<3;++i){
    
    
        string S;
        getline(cin, S);
        for(int j = 0;j<S.size();++j){
    
    
            // 遇到左括号就说明遇到表情了,一直遍历到右括号
            if(S[j] == '['){
    
    
                ++j;
                Symbol[i].push_back(string()); // 先push进一个string对象,这个对象代表一种表情的部位
                // 遍历一个括号[],结束的时候j指向右括号]
                while(S[j] != ']'){
    
    
                    Symbol[i].back() += S[j];
                    ++j;
                }
            }
        }
    }
    int N;
    cin >> N;
    for(int k = 0;k<N;++k){
    
    
        int a, b, c ,d, e;
        cin >> a >> b >> c >> d >> e;
        if(a <= Symbol[0].size() && // 表示的是从一开始的序号而不是索引,所以要加等号
           b <= Symbol[1].size() && 
           c <= Symbol[2].size() &&
           d <= Symbol[1].size() && 
           e <= Symbol[0].size() &&
           a >= 1 && // 考虑下限
           b >= 1 &&
           c >= 1 &&
           d >= 1 &&
           e >= 1
          )  
            cout << Symbol[0][a-1] << "(" << Symbol[1][b-1] << Symbol[2][c-1] << Symbol[1][d-1] << ")" << Symbol[0][e-1] << endl;
        else 
            cout << "Are you kidding me? @\\/@" << endl; // 注意输出\要写成\\转移哦
    }
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/MYMarcoreus/article/details/113787923
今日推荐