有没有简单点的方法不用像这样一个一个数字的打出来?各位带佬。

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

蒟蒻冲冲冲 @ 2020-02-05 12:24:31

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[1000];
    char b[1000][8];
    int x,m=1,i,j;
    memset(b,'X',sizeof(b));
    scanf("%d",&x);
    getchar();
    for(i=1;i<=x;i++)
    {
        a[i]=getchar();
    }
    for(i=1;i<=x;i++)
    {
        m=(i-1)*4+1;
        if(a[i]=='0')
        {
            b[m+1][2]='.';
            b[m+1][3]='.';
            b[m+1][4]='.';
        }
        if(a[i]=='1')
        {
            for(j=1;j<=5;j++)
            {
                b[m][j]='.';
                b[m+1][j]='.';
            }
        }
        if(a[i]=='2')
        {
            b[m][2]='.';
            b[m+1][2]='.';
            b[m+1][4]='.';
            b[m+2][4]='.';
        }
        if(a[i]=='3')
        {
            b[m][2]='.';
            b[m+1][2]='.';
            b[m][4]='.';
            b[m+1][4]='.';
        }
        if(a[i]=='4')
        {
            b[m][4]='.';
            b[m][5]='.';
            b[m+1][1]='.';
            b[m+1][2]='.';
            b[m+1][4]='.';
            b[m+1][5]='.';
        }
        if(a[i]=='5')
        {
            b[m+1][4]='.';
            b[m][4]='.';
            b[m+1][2]='.';
            b[m+2][2]='.';
        }
        if(a[i]=='6')
        {
            b[m+1][2]='.';
            b[m+2][2]='.';
            b[m+1][4]='.';
        }
        if(a[i]=='7')
        {
            for(j=2;j<=5;j++)
            {
                b[m][j]='.';
                b[m+1][j]='.';
            }
        }
        if(a[i]=='8')
        {
            b[m+1][2]='.';
            b[m+1][4]='.';
        }
        if(a[i]=='9')
        {
            b[m][4]='.';
            b[m+1][4]='.';
            b[m+1][2]='.';
        }
        if(i<x)
        {
            for(j=1;j<=5;j++)
                b[m+3][j]='.';
        }
    }
    for(j=1;j<=5;j++)
    {
        for(i=1;i<=4*x-1;i++)
        printf("%c",b[i][j]);
        printf("\n");

    }
    return 0;
}

by DreamFox @ 2020-02-05 13:25:28

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    char a[1000];
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>a[i];
    bool x=1;
    for(int i=0;i<n;i++)
    {
        if(x==0)cout<<".";
        if(a[i]=='0')cout<<"XXX";
        if(a[i]=='1')cout<<"..X";
        if(a[i]=='2')cout<<"XXX";
        if(a[i]=='3')cout<<"XXX";
        if(a[i]=='4')cout<<"X.X";
        if(a[i]=='5'||a[i]=='6'||a[i]=='7'||a[i]=='8'||a[i]=='9')
        cout<<"XXX";
        x=0;
    }
    cout<<endl;
    x=1;
    for(int i=0;i<n;i++)
    {
        if(x==0)cout<<".";
        if(a[i]=='0')cout<<"X.X";
        if(a[i]=='1')cout<<"..X";
        if(a[i]=='2')cout<<"..X";
        if(a[i]=='3')cout<<"..X";
        if(a[i]=='4')cout<<"X.X";
        if(a[i]=='5')cout<<"X..";
        if(a[i]=='6')cout<<"X..";
        if(a[i]=='7')cout<<"..X";
        if(a[i]=='8')cout<<"X.X";
        if(a[i]=='9')cout<<"X.X";
        x=0;
    }
    cout<<endl;
    x=1;
    for(int i=0;i<n;i++)
    {
        if(x==0)cout<<".";
        if(a[i]=='0')cout<<"X.X";
        if(a[i]=='1')cout<<"..X";
        if(a[i]=='2')cout<<"XXX";
        if(a[i]=='3')cout<<"XXX";
        if(a[i]=='4')cout<<"XXX";
        if(a[i]=='5')cout<<"XXX";
        if(a[i]=='6')cout<<"XXX";
        if(a[i]=='7')cout<<"..X";
        if(a[i]=='8')cout<<"XXX";
        if(a[i]=='9')cout<<"XXX";
        x=0;
    }
    cout<<endl;
    x=1;
    for(int i=0;i<n;i++)
    {
        if(x==0)cout<<".";
        if(a[i]=='0')cout<<"X.X";
        if(a[i]=='1')cout<<"..X";
        if(a[i]=='2')cout<<"X..";
        if(a[i]=='3')cout<<"..X";
        if(a[i]=='4')cout<<"..X";
        if(a[i]=='5')cout<<"..X";
        if(a[i]=='6')cout<<"X.X";
        if(a[i]=='7')cout<<"..X";
        if(a[i]=='8')cout<<"X.X";
        if(a[i]=='9')cout<<"..X";
        x=0;
    }
    cout<<endl;
    x=1;
    for(int i=0;i<n;i++)
    {
        if(x==0)cout<<".";
        if(a[i]=='0')cout<<"XXX";
        if(a[i]=='1')cout<<"..X";
        if(a[i]=='2')cout<<"XXX";
        if(a[i]=='3')cout<<"XXX";
        if(a[i]=='4')cout<<"..X";
        if(a[i]=='5')cout<<"XXX";
        if(a[i]=='6')cout<<"XXX";
        if(a[i]=='7')cout<<"..X";
        if(a[i]=='8')cout<<"XXX";
        if(a[i]=='9')cout<<"XXX";
        x=0;
    }
    cout<<endl;
    return 0;
}

这是我的代码


by Resonaa @ 2020-02-05 13:45:07

#include<bits/stdc++.h>
using namespace std;
int n; 
string s[5];
char c;
map<char,char> anti;
inline void addline(const int &l,const int &r,const char &p){for(int i=l;i<=r;i++) s[i]+=p;return;}
inline void dp(){s[0]+='X',s[1]+='.',s[2]+='X',s[3]+='.',s[4]+='X';return;}
inline void st(const int &l,const char &p){for(int i=0;i<5;i++) s[i]+=((i==l)?p:anti[p]);return;}
int main()
{
    scanf("%d",&n);
    getchar();getchar();
    anti['X']='.';anti['.']='X';
    for(int i=1;i<=n;i++)
    {
        scanf("%c",&c); 
        if(i!=1) addline(0,4,'.'); 
        if(c=='0') addline(0,4,'X'),s[0]+='X',addline(1,3,'.'),s[4]+='X',addline(0,4,'X');
        if(c=='1') addline(0,4,'.'),addline(0,4,'.'),addline(0,4,'X');
        if(c=='2') s[0]+='X',s[1]+='.',addline(2,4,'X'),dp(),addline(0,2,'X'),s[3]+='.',s[4]+='X';
        if(c=='3') dp(),dp(),addline(0,4,'X');
        if(c=='4') addline(0,2,'X'),addline(3,4,'.'),st(2,'X'),addline(0,4,'X');
        if(c=='5') st(3,'.'),dp(),st(1,'.');
        if(c=='6') addline(0,4,'X'),dp(),st(1,'.');
        if(c=='7') st(0,'X'),st(0,'X'),addline(0,4,'X');
        if(c=='8') addline(0,4,'X'),dp(),addline(0,4,'X');
        if(c=='9') st(3,'.'),dp(),addline(0,4,'X');
    }
    for(int i=0;i<5;i++) cout<<s[i]<<endl; 
    return 0;
}

这是我的代码。


by RobsonChen @ 2020-03-16 20:33:48

#include <bits/stdc++.h>

using namespace std;

int main() {
//    ios::sync_with_stdio(false);
    string ans[6][10];
    ans[1][0]="XXX";ans[1][1]="..X";ans[1][2]="XXX";ans[1][3]="XXX";ans[1][4]="X.X";ans[1][5]="XXX";
    ans[2][0]="X.X";ans[2][1]="..X";ans[2][2]="..X";ans[2][3]="..X";ans[2][4]="X.X";ans[2][5]="X..";
    ans[3][0]="X.X";ans[3][1]="..X";ans[3][2]="XXX";ans[3][3]="XXX";ans[3][4]="XXX";ans[3][5]="XXX";
    ans[4][0]="X.X";ans[4][1]="..X";ans[4][2]="X..";ans[4][3]="..X";ans[4][4]="..X";ans[4][5]="..X";
    ans[5][0]="XXX";ans[5][1]="..X";ans[5][2]="XXX";ans[5][3]="XXX";ans[5][4]="..X";ans[5][5]="XXX";

    ans[1][6]="XXX";ans[1][7]="XXX";ans[1][8]="XXX";ans[1][9]="XXX";
    ans[2][6]="X..";ans[2][7]="..X";ans[2][8]="X.X";ans[2][9]="X.X";
    ans[3][6]="XXX";ans[3][7]="..X";ans[3][8]="XXX";ans[3][9]="XXX";
    ans[4][6]="X.X";ans[4][7]="..X";ans[4][8]="X.X";ans[4][9]="..X";
    ans[5][6]="XXX";ans[5][7]="..X";ans[5][8]="XXX";ans[5][9]="XXX";

    int n;
    cin>>n;
    string s;cin>>s;
    for(int i=1;i<=5;++i){
        for(int j=0;j<n;++j){
            int cur=s[j]-'0';
            cout<<ans[i][cur]<<(j+1==n?'\n':'.');
        }
    }
    return 0;
}

直接手模(滑稽


by EnigmaZhang @ 2020-04-11 16:37:01

#include <iostream>
#include <string>

int main()
{
    std::string basic{
        "XXX...X.XXX.XXX.X.X.XXX.XXX.XXX.XXX.XXX"
        "X.X...X...X...X.X.X.X...X.....X.X.X.X.X"
        "X.X...X.XXX.XXX.XXX.XXX.XXX...X.XXX.XXX"
        "X.X...X.X.....X...X...X.X.X...X.X.X...X"
        "XXX...X.XXX.XXX...X.XXX.XXX...X.XXX.XXX"
    };

    int n;

    std::cin >> n;
    char* c = new char[n];

    for (int i{ 0 }; i < n; i++)
        std::cin >> c[i];

    for (int i{ 0 }; i < 5; i++)
    {
        for (int j{ 0 }; j < n; j++)
        {
            int char_start{ 4 * (c[j] - '0') + i * 39 };
            std::cout << basic.substr(char_start, 3);
            if (j != n - 1)
                std::cout << '.';
        }
        std::cout << std::endl;
    }

    return 0;
}

我是利用复制粘贴直接初始化字符串,通过计数来寻找对应数字。


|