题目:
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 | 对应字母 |
---|---|
A | Z |
B | Y |
C | X |
D | W |
… | … |
X | C |
Y | B |
Z | A |
输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:
输出在一行中给出替换完成后的字符串。
思路:
由题意可知,26个大写字母中,可以分为前13个(A-M)和后13个(N-Z)两组,第一组的字母由小到大,第二组的字母由大到小;通过举例,可以发现其中转化规律,如下图:
可得,由小变大公式:rev='Z'-(ch-'A'); 由大变小公式:rev='A'+('Z'-ch);
之后再研究发现,这两个公式是等价的,故选择其中一个公式即可满足题目要求,此时不需要再分为两组进行操作。
代码:
#include<stdio.h> int main(){ char ch; while((ch=getchar())!='\n'){ if(ch>='A'&&ch<='Z'){ char rev; rev='A'+('Z'-ch); printf("%c",rev); } else{ //非大写字母,原样输出 printf("%c",ch); } } return 0; }
结果:
★觉得还不错的话,就点个赞吧☛