有大佬帮忙看一下吗,出现中文乱码

P5730 【深基5.例10】显示屏

sevensky @ 2022-11-08 15:51:50

#include<stdio.h>
#include<stdlib.h>
int main() {
    int n; scanf("%d ", &n);
    char m[1001]={'\0'};
    for (int i = 0; i < n; i++) {
        scanf("%c", &m[i]);
    }
    char ans1[1000]={'\0'};
    char ans2[1000]={'\0'};
    char ans3[1000]={'\0'};
    char ans4[1000]={'\0'};
    char ans5[1000]={'\0'};
    for (int i = 0; i < n; i++) {
        switch (m[i]) {
        case '0':ans1[3 * i] = 'X'; ans1[3 * i + 1] = 'X'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += 'X'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += 'X'; ans3[3 * i] += 'X'; ans3[3 * i + 1] += '.'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += 'X'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = 'X'; ans5[3 * i + 1] = 'X'; ans5[3 * i + 2] = 'X';
        case '1':ans1[3 * i] = '.'; ans1[3 * i + 1] = '.'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += '.'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += 'X'; ans3[3 * i] += '.'; ans3[3 * i + 1] += '.'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += '.'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = 'X'; ans5[3 * i + 1] = 'X'; ans5[3 * i + 2] = 'X';
        case '2':ans1[3 * i] = 'X'; ans1[3 * i + 1] = 'X'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += '.'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += 'X'; ans3[3 * i] += 'X'; ans3[3 * i + 1] += 'X'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += 'X'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += '.'; ans5[3 * i] = 'X'; ans5[3 * i + 1] = 'X'; ans5[3 * i + 2] = 'X';
        case '3':ans1[3 * i] = 'X'; ans1[3 * i + 1] = 'X'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += '.'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += 'X'; ans3[3 * i] += 'X'; ans3[3 * i + 1] += 'X'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += '.'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = 'X'; ans5[3 * i + 1] = 'X'; ans5[3 * i + 2] = 'X';
        case '4':ans1[3 * i] = 'X'; ans1[3 * i + 1] = '.'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += 'X'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += 'X'; ans3[3 * i] += 'X'; ans3[3 * i + 1] += 'X'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += '.'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = '.'; ans5[3 * i + 1] = '.'; ans5[3 * i + 2] = 'X';
        case '5':ans1[3 * i] = 'X'; ans1[3 * i + 1] = 'X'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += 'X'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += '.'; ans3[3 * i] += 'X'; ans3[3 * i + 1] += 'X'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += '.'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = 'X'; ans5[3 * i + 1] = 'X'; ans5[3 * i + 2] = 'X';
        case '6':ans1[3 * i] = 'X'; ans1[3 * i + 1] = 'X'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += 'X'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += '.'; ans3[3 * i] += 'X'; ans3[3 * i + 1] += 'X'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += 'X'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = 'X'; ans5[3 * i + 1] = 'X'; ans5[3 * i + 2] = 'X';
        case '7':ans1[3 * i] = 'X'; ans1[3 * i + 1] = 'X'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += '.'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += 'X'; ans3[3 * i] += '.'; ans3[3 * i + 1] += '.'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += '.'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = '.'; ans5[3 * i + 1] = '.'; ans5[3 * i + 2] = 'X';
        case '8':ans1[3 * i] = 'X'; ans1[3 * i + 1] = 'X'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += 'X'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += 'X'; ans3[3 * i] += 'X'; ans3[3 * i + 1] += 'X'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += 'X'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = 'X'; ans5[3 * i + 1] = 'X'; ans5[3 * i + 2] = 'X';
        case '9':ans1[3 * i] = 'X'; ans1[3 * i + 1] = 'X'; ans1[3 * i + 2] = 'X'; ans2[3 * i] += 'X'; ans2[3 * i + 1] += '.'; ans2[3 * i + 2] += 'X'; ans3[3 * i] += 'X'; ans3[3 * i + 1] += 'X'; ans3[3 * i + 2] += 'X'; ans4[3 * i] += '.'; ans4[3 * i + 1] += '.'; ans4[3 * i + 2] += 'X'; ans5[3 * i] = '.'; ans5[3 * i + 1] = '.'; ans5[3 * i + 2] = 'X';
        }
    }
    for (int i = 0; i < 3 * n; i++) {
        printf("%c", ans1[i]);
    }printf("\n");
    for (int i = 0; i < 3 * n; i++) {
        printf("%c", ans2[i]);
    }printf("\n");
    for (int i = 0; i < 3*n; i++) {
        printf("%c", ans3[i]);
    }printf("\n");
    for (int i = 0; i < 3*n; i++) {
        printf("%c", ans4[i]);
    }printf("\n");
    for (int i = 0; i < 3*n; i++) {
        printf("%c", ans5[i]);
    }printf("\n");
    return 0;
    }

by Ruiqun2009 @ 2022-11-08 15:52:35

@sevensky case 之后 break 了吗


by sevensky @ 2022-11-08 15:55:27

@Ruiqun2009 加了之后还是有问题


by Ruiqun2009 @ 2022-11-08 15:57:09

@sevensky 这样写比较烦,试着用更优的解法?


by sevensky @ 2022-11-08 15:58:05

@Ruiqun2009 我试着用了其他办法,但是我想知道这样的bug在哪


by InterN_NOT_FOUND @ 2022-11-08 15:59:11

@sevensky ans3[3 * i + 1] += '.' 这个改成 =

字符+字符是ASCII值的和,容易出乱码


by sevensky @ 2022-11-08 16:02:16

@InterN 这确实是个问题,但是还是有问题


by InterN_NOT_FOUND @ 2022-11-08 16:03:53

@sevensky 加上break,改成=,我这本地就不出乱码了,剩下的就是字符可能设错了


by InterN_NOT_FOUND @ 2022-11-08 16:05:03

把case里的所有+=都换成=


by InterN_NOT_FOUND @ 2022-11-08 16:17:20

@sevensky 你的字符19写错了

另外你数字之间没有空行,加上就AC了


by sevensky @ 2022-11-08 16:17:47

@InterN 解决了谢谢,原因是中间少了间隔,谢谢


| 下一页