cdllang @ 2016-12-01 13:45:45
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
string s;//s为原密码字符串
long long int n;//a为移动字母数
cin>>n;
cin>>s;
n=n%26;
for(int i=0;i<s.size();i++)
{
s[i]=s[i]+n;
while(s[i]<97){s[i]=s[i]+26;};
while(s[i]>122){s[i]=s[i]-26;};
}
cout<<s;
return 0;
}
不知道为什么,当输入 25 abcdefghijklmn.....xyz的时候
输出的结果直接跳过了fghi
不明嚼栗。。。。。
by AnnieL @ 2016-12-18 09:30:48
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
char words[100];
int n;
int main(){
int tmp[100];
scanf("%d",&n);
scanf("%s",&words);
n%=26;
int len=strlen(words);
for(int i=0;i<len;i++)tmp[i]=words[i];
for(int i=0;i<len;i++){
tmp[i]+=n;
if(tmp[i]>122)
tmp[i]-=26;
printf("%c",tmp[i]);
}
return 0;
}
好像直接用string做加减会出错
但是把里面的每一个字母对应的ASCII码存到一个数组里面加减就不会出错了