C++求助,为啥显示98行ans[i][j]处有错?

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

doggy38 @ 2024-08-21 20:21:28

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    char num[n+1];
    string ans[6][n+1];
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&num[i]);
        if(num[i]=='0')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X.X';
            ans[3][i]+='X.X';
            ans[4][i]+='X.X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='1')
        {
            ans[1][i]+='..X';
            ans[2][i]+='..X';
            ans[3][i]+='..X';
            ans[4][i]+='..X';
            ans[5][i]+='..X';
        }
        if(num[i]=='2')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='..X';
            ans[3][i]+='XXX';
            ans[4][i]+='X..';
            ans[5][i]+='XXX';
        }
        if(num[i]=='3')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='..X';
            ans[3][i]+='XXX';
            ans[4][i]+='..X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='4')
        {
            ans[1][i]+='X.X';
            ans[2][i]+='X.X';
            ans[3][i]+='XXX';
            ans[4][i]+='..X';
            ans[5][i]+='..X';
        }
        if(num[i]=='5')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X..';
            ans[3][i]+='XXX';
            ans[4][i]+='..X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='6')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X..';
            ans[3][i]+='XXX';
            ans[4][i]+='X.X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='7')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='..X';
            ans[3][i]+='..X';
            ans[4][i]+='..X';
            ans[5][i]+='..X';
        }
        if(num[i]=='8')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X.X';
            ans[3][i]+='XXX';
            ans[4][i]+='X.X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='9')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X.X';
            ans[3][i]+='XXX';
            ans[4][i]+='..X';
            ans[5][i]+='XXX';
        }
    }
    int j=1;
    for(int i=1;i<=5;i++)
    {
        for(j=1;j<=n;j++)
        {
            printf("%s",ans[i][j]);
            if(j!=n)printf(".");
        }
    }
    return 0;
 } 

by doggy38 @ 2024-08-21 20:22:14

就是最后一个printf


by wyc0607 @ 2024-08-21 20:34:44

@doggy38 亲测能过,求关


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    char num;
    string ans[6];
    for(int i=1;i<=n-1;i++)
    {
        cin>>num;
        if(num=='0')
        {
            ans[1]+="XXX.";
            ans[2]+="X.X.";
            ans[3]+="X.X.";
            ans[4]+="X.X.";
            ans[5]+="XXX.";
        }
        if(num=='1')
        {
            ans[1]+="..X.";
            ans[2]+="..X.";
            ans[3]+="..X.";
            ans[4]+="..X.";
            ans[5]+="..X.";
        }
        if(num=='2')
        {
            ans[1]+="XXX.";
            ans[2]+="..X.";
            ans[3]+="XXX.";
            ans[4]+="X...";
            ans[5]+="XXX.";
        }
        if(num=='3')
        {
            ans[1]+="XXX.";
            ans[2]+="..X.";
            ans[3]+="XXX.";
            ans[4]+="..X.";
            ans[5]+="XXX.";
        }   
        if(num=='4')
        {
            ans[1]+="X.X.";
            ans[2]+="X.X.";
            ans[3]+="XXX.";
            ans[4]+="..X.";
            ans[5]+="..X.";
        }
        if(num=='5')
        {
            ans[1]+="XXX.";
            ans[2]+="X...";
            ans[3]+="XXX.";
            ans[4]+="..X.";
            ans[5]+="XXX.";
        }
        if(num=='6')
        {
            ans[1]+="XXX.";
            ans[2]+="X...";
            ans[3]+="XXX.";
            ans[4]+="X.X.";
            ans[5]+="XXX.";
        }
        if(num=='7')
        {
            ans[1]+="XXX.";
            ans[2]+="..X.";
            ans[3]+="..X.";
            ans[4]+="..X.";
            ans[5]+="..X.";
        }
        if(num=='8')
        {
            ans[1]+="XXX.";
            ans[2]+="X.X.";
            ans[3]+="XXX.";
            ans[4]+="X.X.";
            ans[5]+="XXX.";
        }
        if(num=='9')
        {
            ans[1]+="XXX.";
            ans[2]+="X.X.";
            ans[3]+="XXX.";
            ans[4]+="..X.";
            ans[5]+="XXX.";
        }
    }
    cin>>num;
        if(num=='0')
        {
            ans[1]+="XXX";
            ans[2]+="X.X";
            ans[3]+="X.X";
            ans[4]+="X.X";
            ans[5]+="XXX";
        }
        if(num=='1')
        {
            ans[1]+="..X";
            ans[2]+="..X";
            ans[3]+="..X";
            ans[4]+="..X";
            ans[5]+="..X";
        }
        if(num=='2')
        {
            ans[1]+="XXX";
            ans[2]+="..X";
            ans[3]+="XXX";
            ans[4]+="X..";
            ans[5]+="XXX";
        }
        if(num=='3')
        {
            ans[1]+="XXX";
            ans[2]+="..X";
            ans[3]+="XXX";
            ans[4]+="..X";
            ans[5]+="XXX";
        }   
        if(num=='4')
        {
            ans[1]+="X.X";
            ans[2]+="X.X";
            ans[3]+="XXX";
            ans[4]+="..X";
            ans[5]+="..X";
        }
        if(num=='5')
        {
            ans[1]+="XXX";
            ans[2]+="X..";
            ans[3]+="XXX";
            ans[4]+="..X";
            ans[5]+="XXX";
        }
        if(num=='6')
        {
            ans[1]+="XXX";
            ans[2]+="X..";
            ans[3]+="XXX";
            ans[4]+="X.X";
            ans[5]+="XXX";
        }
        if(num=='7')
        {
            ans[1]+="XXX";
            ans[2]+="..X";
            ans[3]+="..X";
            ans[4]+="..X";
            ans[5]+="..X";
        }
        if(num=='8')
        {
            ans[1]+="XXX";
            ans[2]+="X.X";
            ans[3]+="XXX";
            ans[4]+="X.X";
            ans[5]+="XXX";
        }
        if(num=='9')
        {
            ans[1]+="XXX";
            ans[2]+="X.X";
            ans[3]+="XXX";
            ans[4]+="..X";
            ans[5]+="XXX";
        }
    int j=1;
    for(int i=1;i<=5;i++)
    {
            cout<<ans[i]<<'\n';
    }
    return 0;
 }

by ikun_555 @ 2024-08-21 20:37:16

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    char num[n+1];
    string ans[6][n+1];
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&num[i]);
        if(num[i]=='0')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X.X';
            ans[3][i]+='X.X';
            ans[4][i]+='X.X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='1')
        {
            ans[1][i]+='..X';
            ans[2][i]+='..X';
            ans[3][i]+='..X';
            ans[4][i]+='..X';
            ans[5][i]+='..X';
        }
        if(num[i]=='2')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='..X';
            ans[3][i]+='XXX';
            ans[4][i]+='X..';
            ans[5][i]+='XXX';
        }
        if(num[i]=='3')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='..X';
            ans[3][i]+='XXX';
            ans[4][i]+='..X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='4')
        {
            ans[1][i]+='X.X';
            ans[2][i]+='X.X';
            ans[3][i]+='XXX';
            ans[4][i]+='..X';
            ans[5][i]+='..X';
        }
        if(num[i]=='5')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X..';
            ans[3][i]+='XXX';
            ans[4][i]+='..X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='6')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X..';
            ans[3][i]+='XXX';
            ans[4][i]+='X.X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='7')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='..X';
            ans[3][i]+='..X';
            ans[4][i]+='..X';
            ans[5][i]+='..X';
        }
        if(num[i]=='8')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X.X';
            ans[3][i]+='XXX';
            ans[4][i]+='X.X';
            ans[5][i]+='XXX';
        }
        if(num[i]=='9')
        {
            ans[1][i]+='XXX';
            ans[2][i]+='X.X';
            ans[3][i]+='XXX';
            ans[4][i]+='..X';
            ans[5][i]+='XXX';
        }
    }
    int j=1;
    for(int i=1;i<=5;i++)
    {
        for(j=1;j<=n;j++)
        {
            printf("%s",ans[i][j].c_str()来使);
            if(j!=n)printf(".");
        }
    }
    return 0;
 } 

直接使用printf("%s", s)来输出string类型的数组是不允许的, printf函数输出string类型的变量都需要加.c_str()来转换为c语言风格的字符串


by ikun_555 @ 2024-08-21 20:38:37

@ikun_555 多打了个来使...原本是想回复的时候说的...请把在使用时删除这两个字


by doggy38 @ 2024-08-21 20:52:14

@wyc0607 谢谢,已关注


by doggy38 @ 2024-08-21 20:52:51

@ikun_555 你好有耐心,我懂了,谢谢你!


by ikun_555 @ 2024-08-21 22:05:31

@doggy38 额,没必要这么说吧,对待洛谷的大神提出的问题必须得耐心啊【捂脸】


|