C++,自己测试了几遍结果都没问题,但是4和5WA,求助

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

Pusder @ 2022-10-12 20:35:50

#include <iostream>
using namespace std;
#include <cmath>
#include <string>
string zero[5]={"XXX","X.X","X.X","X.X","XXX"};
string one[5]={"..X","..X","..X","..X","..X"};
string two[5]={"XXX","..X","XXX","X..","XXX"};
string three[5]={"XXX","..X","XXX","..X","XXX"};
string four[5]={"X.X","X.X","XXX","..X","..X"};
string five[5]={"XXX","X..","XXX","..X","XXX"};
string six[5]={"XXX","X..","XXX","X.X","XXX"};
string seven[5]={"XXX","..X","..X","..X","..X"};
string eight[5]={"XXX","X.X","XXX","X.X","XXX"};
string nine[5]={"XXX","X.X","XXX","..X","XXX"};
string shuchu(int i,int j)
{
    switch(i)
    {
        case 0: return zero[j];
        case 1: return one[j];
        case 2: return two[j];
        case 3: return three[j];
        case 4: return four[j];
        case 5: return five[j];
        case 6: return six[j];
        case 7: return seven[j];
        case 8: return eight[j];
        case 9: return nine[j];
        default: return 0;
    }
}
int main()
{
    int n,a;
    cin>>n>>a;
    int arr[n];
    for(int i=n-1;i>=0;i--)//获取各位数字
    {
        arr[i]=a%10;
        a/=10;
    }
    for(int j=0;j<5;j++)//输出
    {
        for(int i=0;i<n;i++)//输出的每一行
        {
            if(i==n-1)
            {
                cout<<shuchu(arr[i],j)<<endl;
                break;
            }
            cout<<shuchu(arr[i],j)<<".";
        }
    }
    system("pause");
    return 0;
}

by _Waldeinsamkeit_ @ 2022-10-12 21:05:36

#include<iostream>
#include<cstdio>
#include<cstring> 
#include<algorithm>
using namespace std;
int c[110];
char b[110],a[11][6][4]=
{
    {
    'X','X','X','.',
    'X','.','X','.',
    'X','.','X','.',
    'X','.','X','.',
    'X','X','X','.',
    },
    {
    '.','.','X','.',
    '.','.','X','.',
    '.','.','X','.',
    '.','.','X','.',
    '.','.','X','.',
    },
    {
    'X','X','X','.',
    '.','.','X','.',
    'X','X','X','.',
    'X','.','.','.',
    'X','X','X','.',
    },
    {
    'X','X','X','.',
    '.','.','X','.',
    'X','X','X','.',
    '.','.','X','.',
    'X','X','X','.',
    },
    {
    'X','.','X','.',
    'X','.','X','.',
    'X','X','X','.',
    '.','.','X','.',
    '.','.','X','.',
    },
    {
    'X','X','X','.',
    'X','.','.','.',
    'X','X','X','.',
    '.','.','X','.',
    'X','X','X','.',
    },
    {
    'X','X','X','.',
    'X','.','.','.',
    'X','X','X','.',
    'X','.','X','.',
    'X','X','X','.',
    },
    {
    'X','X','X','.',
    '.','.','X','.',
    '.','.','X','.',
    '.','.','X','.',
    '.','.','X','.',
    },
    {
    'X','X','X','.',
    'X','.','X','.',
    'X','X','X','.',
    'X','.','X','.',
    'X','X','X','.',
    },
    {
    'X','X','X','.',
    'X','.','X','.',
    'X','X','X','.',
    '.','.','X','.',
    'X','X','X','.',
    }
};
int main()
{
    long long n,m,l,k,i,j,z=0;
    cin>>n;
    scanf("%s",b);
    l=strlen(b);
    for (i=0;i<=l-1;i++)
        c[i]=b[i]-'0';
    for (i=0;i<=4;i++)
        {
        for (j=0;j<=l-1;j++)
            {
            if (j<l-1)
                for (k=0;k<=3;k++)
                    cout<<a[c[j]][i][k];
            else
                for (k=0;k<=2;k++)
                    cout<<a[c[j]][i][k];
            }   
        cout<<endl;
        }
    return 0;
}

用循环就可做出来,不用那么麻烦吧


|