一个很好理解也很笨的方法
查看原帖
一个很好理解也很笨的方法
1460846
Cc20120608楼主2025/6/29 16:28

重在理解,不可抄袭

警示后人(易错点):1.题中X为大写。2.每两个“数字”之间有“.”分开。

看代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[105];//其实这边a数组可以省略,但我为了不动脑子加上了
bool cnt[10][16]={{1,1,1,1,0,1,1,0,1,1,0,1,1,1,1},{0,0,1,0,0,1,0,0,1,0,0,1,0,0,1},{1,1,1,0,0,1,1,1,1,1,0,0,1,1,1},{1,1,1,0,0,1,1,1,1,0,0,1,1,1,1},{1,0,1,1,0,1,1,1,1,0,0,1,0,0,1},{1,1,1,1,0,0,1,1,1,0,0,1,1,1,1},{1,1,1,1,0,0,1,1,1,1,0,1,1,1,1},{1,1,1,0,0,1,0,0,1,0,0,1,0,0,1},{1,1,1,1,0,1,1,1,1,1,0,1,1,1,1},{1,1,1,1,0,1,1,1,1,0,0,1,1,1,1}};
/*cnt数组就是用来储存数字相对应的显示屏的,
cnt[a][b]储存数字a的编号为b(详见下方)字符(1代表x,0
代表.)
xxx          0,1,2
x.x          3,4,5
x.x编号分别为5,6,7
x.x          8,9,10        
xxx          10,11,12
例如cnt[0][0]=1(即x)
1表示亮点,0表示暗点*/
string s;//因为输入第二行没空格
int main()
{
    cin>>n>>s;
    for(int i=0;i<n;i++)
        a[i]=int(s[i]-48);//char转化为int
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<3;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";//将亮点转化为X
            else
               cout<<".";、//将暗点转化为.
        }
        if(i!=n-1)//最后一个数后面不加“.”
            cout<<".";
    }
    cout<<endl;//输入第一行(编号0,1,2),下面类比
    for(int i=0;i<n;i++)
    {
        for(int j=3;j<6;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=6;j<9;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=9;j<12;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=12;j<15;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    return 0;
}

完整代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[105];
bool cnt[10][16]={{1,1,1,1,0,1,1,0,1,1,0,1,1,1,1},{0,0,1,0,0,1,0,0,1,0,0,1,0,0,1},{1,1,1,0,0,1,1,1,1,1,0,0,1,1,1},{1,1,1,0,0,1,1,1,1,0,0,1,1,1,1},{1,0,1,1,0,1,1,1,1,0,0,1,0,0,1},{1,1,1,1,0,0,1,1,1,0,0,1,1,1,1},{1,1,1,1,0,0,1,1,1,1,0,1,1,1,1},{1,1,1,0,0,1,0,0,1,0,0,1,0,0,1},{1,1,1,1,0,1,1,1,1,1,0,1,1,1,1},{1,1,1,1,0,1,1,1,1,0,0,1,1,1,1}};
string s;
int main()
{
    cin>>n>>s;
    for(int i=0;i<n;i++)
        a[i]=int(s[i]-48);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<3;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=3;j<6;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=6;j<9;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=9;j<12;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=12;j<15;j++)
        {
           if(cnt[a[i]][j]==1)
               cout<<"X";
            else
               cout<<".";
        }
        if(i!=n-1)
            cout<<".";
    }
    cout<<endl;
    return 0;
}

有任何批评和改进的,欢迎评论区!。

2025/6/29 16:28
加载中...