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
感谢感谢大佬,谢谢谢谢