哪里错了?
  • 板块题目总版
  • 楼主zhege122
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/2 12:18
  • 上次更新2024/11/2 13:08:20
查看原帖
哪里错了?
1123449
zhege122楼主2024/11/2 12:18

题目及源代码

源代码在评论区

我改完之后的代码:

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    cin >> n;
    string m = "English";  // 当前模式
    bool s = true;        // shift是否按下
    bool c = false;        // 大写锁定
    string i;              // 当前输入(中文模式下存储)
    vector<string> v;      // 输入序列
    for (int j = 0; j < n; j++) {
        string k;
        cin >> k;
        v.push_back(k);
    }
    string o;              // 输出
    for (int j = 0; j < n; j++) {
        string k = v[j];
        if (k == "ShiftDown") {
            s = true;
            if (j + 1 < n && v[j + 1] == "ShiftUp") {
                if (m == "English") {
                    m = "Chinese";
                } else {
                    m = "English";
                    o += i;
                    i = "";
                }
                j++;
            } else {
            	c = !c;
			}
        } else if (k == "ShiftUp") {
        	if (s == true) {
        		c = !c;
			}
            s = false;
        } else if (k == "CapsLock") {
            c =!c;
        } else if (k == "Esc") {
            i = "";
        } else if (k == "Enter") {
            if (i.size() > 0) {
                o += i;
                i = "";
            } else {
                o += '\n';
            }
        } else if (k == "Backspace") {
            if (i.size() > 0) {
                i.pop_back();
            } else if (o.size() > 0) {
                o.pop_back();
            }
        } else {
            if (m == "Chinese") {
                i += k;
            } else {
                if (s ^ c) {
                    o += toupper(k[0]);
                } else {
                    o += tolower(k[0]);
                }
            }
        }
    }
    cout << o << endl;
    return 0;
}

输出: acYA

为什么会这个样子?!

2024/11/2 12:18
加载中...