求大佬救救蒟蒻,为啥答案都对了,全都wa啊啊啊,呜呜

P1914 小书童——凯撒密码

OnceYk @ 2020-10-30 21:06:11

#include <stdio.h>
int main()
{
    char a;
    int n;
    scanf("%d",&n);
    n=n%26;
    getchar();
    while(scanf("%c",&a)!='\n'&&a<='z'&&a>='a')
    {
        if(a<='z'-n)
        printf("%c",a+n);
        else
        printf("%c",a-26+n);
    }
    return 0;
}

by Out_Land @ 2020-11-05 17:10:44

@OnceYk

getchar()是读入一个字符

比如:

char a,b,c;
a=getchar();
b=getchar();
c=getchar();

如果数据是1yz,那么a,b,c分别为'1','y','z'

但如果数据是1 yz,那么a,b,c分别为'1','空格','z'


by Out_Land @ 2020-11-05 17:11:48

哦不,最后一行a,b,c为'1','空格','y'


by Out_Land @ 2020-11-05 17:17:17

可能题目样例中没有空格,

可是实际上数据有没有多几个空格(或换行符)如果不影响结果的话是被允许的

这边建议面对有关字符的题的时候,每一行要读到换行符后再读下一行,如果读到空格没用的话就要跳过。


by Out_Land @ 2020-11-05 17:30:47

举个例子:

比如要读的字符全是字母,单词之间以空格隔开,要求输出所有单词(数据类似如下):

11
daslkfj alsdfjo   asoidfjoi  
aosidfj  oas
saodif  aosidfjsdlkf   adoifj

aodsfjoiasdjf        dasoijf

adsoif                        

(第一个数字表示几个单词)

你可以:

#include<cstdio>
#include<iostream>

using namespace std;

int n;

int main()
{
//  freopen("a.in","r",stdin);
    scanf("%d\n",&n);
    int cnt=0;
    char ch;
    ch=getchar();
    while (cnt<n)   
    {
        while (ch!=' '&&ch!='\n')
        {
            printf("%c",ch);
            ch=getchar();
        }
        while (ch==' '||ch=='\n') ch=getchar();
        printf("\n");
        cnt++;
    }
    return 0;
}

by Out_Land @ 2020-11-05 17:32:57

输出:

daslkfj
alsdfjo
asoidfjoi
aosidfj
oas
saodif
aosidfjsdlkf
adoifj
aodsfjoiasdjf
dasoijf
adsoif

by Out_Land @ 2020-11-05 17:38:50

@OnceYk

字符串之类的题就要细心


by Out_Land @ 2020-11-05 17:40:42

其实题做多了就行了


by OnceYk @ 2020-11-14 20:11:06

感谢感谢大佬,谢谢谢谢


上一页 |