pqy000 @ 2018-09-10 17:23:01
#include<iostream>
#include<string.h>
using namespace std;
char s[55];
int n;
int main() {
scanf("%d",&n); getchar();
gets(s);
int len = (int)strlen(s);
for(int i = 0; i < len; i++) { s[i] = (s[i] - 'a' + n) % 26 + 'a'; }
cout << s;
return 0;
}
by pqy000 @ 2018-09-10 17:23:19
求解答,谢谢诸位大佬...
by Viston @ 2018-09-10 17:34:02
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,k;
char ch[100];
scanf("%d %s",&n,ch);
int l=strlen(ch);
for(i=0;i<l;i++)
{
ch[i]=((ch[i]-'a')+n)%26+('a');
}
puts(ch);
return 0;
}
by Viston @ 2018-09-10 17:34:53
@pqy000 你貌似多读了一个回车(大佬别打我脸)
by 猫猬兽 @ 2018-09-10 18:00:48
把gets换其他读入方式
by pqy000 @ 2018-09-10 19:56:17
@Viston 谢谢您,问题解决了.... 因为之前我发现如果先读入数字,再读入字符串的话会结束不了,所以我养成了getchar()来处理读入的换行符的方案,我将代码改成如下,即AC了..
scanf("%d",&n); //getchar();
scanf("%s", s);
话说大佬请问您,遇到之前先读入数字,再读入字符串有没有更好的解决方案,谢谢。
by pqy000 @ 2018-09-10 19:57:54
@李俊睿 好的,谢谢您,问题解决了我将问题改成了
scanf("%d",&n); //getchar();
scanf("%s", s);
即可..不过我还是比较好奇,为何我之前采用以下两种读入方法均报错,谢谢。
//way1
string s;
getline(cin, s);
//way2
char s[55];
gets(s);
by Wgp19981201 @ 2018-09-25 16:33:36
getch();
换成
fflush(stdin);