LFY1201 @ 2019-09-17 00:19:15
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i;
char code[51];
scanf("%d",&n);//读入n
getchar();//读取换行符,避免影响下步骤
for(i=0;(code[i]=getchar())!='\n';i++)
printf("%c",(code[i]-'a'+n)%26+'a');//读取输出
return 0;
}
by 与我常在 @ 2019-09-17 10:01:58
洛谷是在linux系统下测试的
换行符并不是'\r\n', 而是'\n'
by 与我常在 @ 2019-09-17 10:03:07
对于我这种蒟蒻这种题只敢离线做
by LFY1201 @ 2019-09-17 11:25:28
@陈年风褛丶 好的,谢谢,不过我改过来就变成了越界,然后我应用(code[i]=getchar())>='a'&&(code[i]=getchar())<='z'条件,同样全是WA。
by 与我常在 @ 2019-09-17 11:58:16
@LFY1201 您可以尝试用scanf("%s", code) 来读入, 然后用strlen读取长度,最后for循环遍历一遍,对每个字符进行操作
by 与我常在 @ 2019-09-17 12:01:48
@LFY1201 (code[i]=getchar())>='a'&&(code[i]=getchar())<='z')并且这个语句中 getchar()函数执行了两遍,相当于读取了两个字符,你最好开个char变量存取本次读取的字符,在进行判断
by 与我常在 @ 2019-09-17 16:42:25
@LFY1201
#include <cstdio>
int main() {
int n;
char code;
scanf("%d",&n);
getchar(); getchar();
for(;;) {
code = getchar();
if(code >= 'a' && code <= 'z') printf("%c", (code - 'a' + n) % 26 + 'a');
else break;
}
return 0;
}
两个getchar()分别读取'\r'与'\n'
by LFY1201 @ 2019-09-17 21:28:11
@陈年风褛丶 非常感谢您的帮助,您第一次的说明我没有理解,因此造成了后面的事情,再次表示感谢
by 与我常在 @ 2019-09-17 21:31:35
@LFY1201 我以为你懂了。。
by LFY1201 @ 2019-09-18 11:54:48
@陈年风褛丶 我那个时候以为后续结束时的时候要读入两个,没有意识到主要问题是上面的读入问题