百木生 2020-10-23 10:56 采纳率: 50%
浏览 115
已采纳

大佬求救,为什么Switch会跳不出去,这是什么错误啊

图片说明

#include<iostream>
#include<vector>
#include<string>
using namespace std;
void display(char n) {
    char a[4][6];
    switch (n-'0') {
    case 0:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if (j == 2 && ((i != 1) && (i != 5))) a[i][j] = '.';
                else a[i][j] = 'X';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    case 1:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if (j == 3) a[i][j] = 'X';
                else a[i][j] = '.';
            }
        }break;
    case 2:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if ((i == 2 && j != 3) || (i == 4 && j != 1)) a[i][j] = '.';
                else a[i][j] = 'X';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    case 3:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if ((i == 2 && j != 3) || (i == 4 && j != 3)) a[i][j] = '.';
                else a[i][j] = 'X';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    case 4:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if ((j == 2 && i != 3) || (i == 4 && j != 3) || (i == 5) && (j != 3)) a[i][j] = '.';
                else a[i][j] = 'X';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    case 5:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if ((i == 2 && j != 1) && (i == 4 && j != 3)) a[i][j] = '.';
                else a[i][j] = 'X';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    case 6:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if ((i == 2 && j != 1) && (i == 4 && j == 2)) a[i][j] = '.';
                else a[i][j] = 'X';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    case 7:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if (i == 1 || j == 3) a[i][j] = 'X';
                else a[i][j] = '.';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    case 8:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if ((i == 2 && j == 2) || (i == 4 && j == 2)) a[i][j] = '.';
                else a[i][j] = 'X';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    case 9:
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                if ((i == 2 && j == 2) || (i == 4 && j != 3)) a[i][j] = '.';
                else a[i][j] = 'X';
            }
        }
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j < 4; j++) {
                cout << a[i][j];
            }
            cout << '\n';
        }
        break;
    }
}
int main() {
    int x;
    string s;
    cin >> x;
    cin >> s;
    for (int i = 0; i < s.size(); i++) {
        display(s[i]);
    }
    return 0;
}
  • 写回答

1条回答 默认 最新

  • Onvejon 2020-10-23 12:00
    关注

    看你 a 的定义 以及后面 i j 的范围,很明显 i应该小于 4的,你的 i <6 数组访问越界了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器