12.编写一个程序,输入一个字符串,将其中所以的大写英文字母+3,小写字母-3。然后再输出加密后的

12.编写一个程序,输入一个字符串,将其中所以的大写英文字母+3,小写字母-3。然后再输出加密后的字符串。
13.编一个程序,将按第12题中加密的字符串(从键盘输入)解密后输出。
求解13题的程序,下面是我写的12题。

#include <stdio.h>

char *Change(char s[]) {
int i;
for(i = 0; s[i]; ++i) {
if(s[i] >= 'a' && s[i] <= 'z')
s[i] = (26 + (s[i] - 'a' - 3))%26 + 'a';
if(s[i] >= 'A' && s[i] <= 'Z')
s[i] = (26 + (s[i] - 'A' + 3))%26 + 'A';
}
return s;
}

char *Change2(char s[]) {
int i;
for(i = 0; s[i]; ++i) {
if(s[i] >= 'a' && s[i] <= 'z')
s[i] = (26 + (s[i] - 'a' + 3))%26 + 'a';
if(s[i] >= 'A' && s[i] <= 'Z')
s[i] = (26 + (s[i] - 'A' - 3))%26 + 'A';
}
return s;
}

int main() {
char a[] = "dsereaiklfiwieik",b[] = "slASSFGGHHJHKKIUUYUYYHHNJKK";
printf("转换前: %s\n",a);
printf("转换后: %s\n",Change(a));
printf("恢复后: %s\n\n",Change2(a));
printf("转换前: %s\n",b);
printf("转换后: %s\n",Change(b));
printf("恢复后: %s\n",Change2(b));
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-17
还像12那样写,把判断分支改为:
if(a[i]-3>='A' && a[i]-3<='Z')
a[i]-=3;
else if(a[i]+3>='a' && a[i]+3<='z')
a[i]+=3;
即可。追问

可是字符Z加三后会变成],这里就没法计算了

追答

你不要想当然,建议试一下。不听就算了……没有功夫!

本回答被网友采纳
相似回答