#include stdio.h
main()
{char c;
/***********SPACE***********/
while((c=getchar())!='\n')
/***********SPACE***********/
{if((c='a'c='z')||(c='A'c='Z'))c+=4;;
/***********SPACE***********/
if((c'Z'c='Z'+4)||c'z')c-=26;
printf("%c",c);
}
}
已验证
a b c d e f g h i j
例子里输入ab,cd
a是第1个字符,那么换成a后面第1个,也就是b
b是第2个字符,那么换成b后面第2个,也就是d
到这里都没错
c是第4个字符,那么换成后面第4个,也就是g,为什么题目示例是h???
#include stdio.h
#include ctype.h
int main()
{
int i=0;
char str[1001];
fgets(str,1000,stdin);
while(str[i]){
if(islower(str[i]))
str[i]=97+(str[i]+i-96)%26;
else if(isupper(str[i]))
str[i]=65+(str[i]+i-64)%26;
i++;
}
puts(str);
return 0;
}
#includeiostream
using namespace std;
#define SKIP 4
int main(){
char str[21]="China#";
cout "译码前:" "\b " str endl;
// 这里跳过合法性检查。
for (int i = 0; i 21 str[i] != '#'; i++){
if (str[i] = 65 str[i] = 90){
if (str[i] + SKIP90) str[i] = 65 + (str[i] + SKIP - 90);// 重新到回头部。
else str[i] = str[i] + SKIP;
}
else{
if (str[i] + SKIP122) str[i] = 97 + (str[i] + SKIP - 122);// 重新到回头部。
else str[i] = str[i] + SKIP;
}
}
cout "译码后:" "\b " str endl;
return 0;
}
另外多说一句,如果A译成E,那么你举的例子:“Who”应译为“Als”就不正确了,应该是“Who”应译为“Bls”才正确。