百木生 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 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致