aniuge @ 2017-05-03 18:19:57
#include<iostream>
using namespace std;
char a[2000];
int n,i;
int main()
{
cin>>n;
n%=26;
cin>>a;
for(i=0;a[i]!='\0';i++)
{
a[i]=a[i]+n;
if(a[i]>'z') a[i]=a[i]-26;
if(a[i]<'a') a[i]=a[i]+26;
}
for(i=0;a[i]!='\0';i++)
cout<<a[i];
return 0;
}
by doge233 @ 2017-05-03 18:51:01
有大写转小写和加完以后数值可能超出char的上界
by W_px @ 2017-07-04 16:17:36
@doge233 是的。
应该在这之前预判一下,不然的话会输出�����。(比如:25 zzzzz)
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
int n;
cin>>n>>s;
int x=s.length();
for(int k=0;k<=x;k++)
{
if(char(int(s[k])+n%26-26)<'a')s[k]=char(int(s[k])+n%26);
else s[k]=char(int(s[k])-26+n%26);
}
cout<<s;
return 0;
}
by doge233 @ 2017-07-12 00:09:05
@W_px 第一次被@感谢感谢