求助 关于scanf输入字符的问题

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

lk_liang @ 2021-10-23 17:25:34

#include<iostream>
#include<cstdio> 
using namespace std;
int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {   
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
        x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    return x*f;
}
char c[110];
string k[10][6];      //  k[i][j]表示第i个数字第j行该输出什么 
int main()
{
    int n=read();
    for(int i=1;i<=n;i++) scanf("%c",&c[i]);
    k[0][1]="XXX",k[0][2]="X.X",k[0][3]="X.X",k[0][4]="X.X",k[0][5]="XXX"; 
    k[1][1]="..X",k[1][2]="..X",k[1][3]="..X",k[1][4]="..X",k[1][5]="..X";
    k[2][1]="XXX",k[2][2]="..X",k[2][3]="XXX",k[2][4]="X..",k[2][5]="XXX";
    k[3][1]="XXX",k[3][2]="..X",k[3][3]="XXX",k[3][4]="..X",k[3][5]="XXX";
    k[4][1]="X.X",k[4][2]="X.X",k[4][3]="XXX",k[4][4]="..X",k[4][5]="..X";
    k[5][1]="XXX",k[5][2]="X..",k[5][3]="XXX",k[5][4]="..X",k[5][5]="XXX";
    k[6][1]="XXX",k[6][2]="X..",k[6][3]="XXX",k[6][4]="X.X",k[6][5]="XXX";
    k[7][1]="XXX",k[7][2]="..X",k[7][3]="..X",k[7][4]="..X",k[7][5]="..X";
    k[8][1]="XXX",k[8][2]="X.X",k[8][3]="XXX",k[8][4]="X.X",k[8][5]="XXX";
    k[9][1]="XXX",k[9][2]="X.X",k[9][3]="XXX",k[9][4]="..X",k[9][5]="XXX";
    for(int i=1;i<=5;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cout<<k[c[j]-'0'][i];
            if(j!=n) printf(".");
        }

        printf("\n");
    }
    return 0;   
} 

这份代码是AC不了的 但只要把

scanf("%c",&c[i]);

改成

scanf(" %c",&c[i]);

就AC了 请问dalao这是为什么?


by lk_liang @ 2021-10-23 17:26:22

或者说用cin也直接A了 为什么啊


by lk_liang @ 2021-10-23 17:32:36

dd


by legend3366 @ 2021-11-05 13:31:59

@lk_liang cin函数输入遇到空格,TAB键,回车会终止输入


|