题目:
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
| 原字母 | 对应字母 |
|---|---|
| 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; } 结果:



★觉得还不错的话,就点个赞吧☛