Alien_99 @ 2016-08-24 19:13:23
#include<stdio.h>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string.h>
#include <cstdlib>
using namespace std;
int main(){
char zx[27];
int n;
zx[0]='a';
zx[1]='b';
zx[2]='c';
zx[3]='d';
zx[4]='e';
zx[5]='f';
zx[6]='g';
zx[7]='h';
zx[8]='i';
zx[9]='j';
zx[10]='k';
zx[11]='l';
zx[12]='m';
zx[13]='n';
zx[14]='o';
zx[15]='p';
zx[16]='q';
zx[17]='r';
zx[18]='s';
zx[19]='t';
zx[20]='u';
zx[21]='v';
zx[22]='w';
zx[23]='x';
zx[24]='y';
zx[25]='z';
cin>>n;
char a;
for(int i=1;scanf("%c",&a)!=EOF;i++){
for(int j=0;j<=25;j++)
{
if(a==zx[j])
{
cout<<zx[j+n];
break;
}
}
}
return 0 ;
}
by 仇哥 @ 2016-09-28 23:23:40
如果n大于26就可能调用数组范围外的数据,造成错误
可以把cout<<zx[j+n]改成cout<<zx[(j+n)%26]
还有,可以看看我的代码
#include <stdio.h>
int main()
{
char in[100];
int n, j;
scanf("%d%s", &n, in);
for(j = 0; in[j] != '\0'; j++)
putchar((in[j]-'a'+n)%26+'a');
}