要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.
例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。
请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
- 变量初始化:定义了五个字符变量
c1
、c2
、c3
、c4
、c5
,并分别初始化为'C'
、'h'
、'i'
、'n'
、'a'
。 - 译码运算:
- 对于大写字母,先将其减去
'A'
得到一个 0 到 25 之间的整数,代表该字母在字母表中的位置。 - 然后加上 4,表示向后移动 4 个位置。
- 接着对 26 取模,以处理字母表循环的情况(即从 'Z' 再往后会回到 'A')。
- 最后再加上
'A'
,将结果转换回对应的大写字母。 - 对于小写字母,处理方式类似,只是将
'A'
换成'a'
。
- 对于大写字母,先将其减去
- 输出结果:使用
printf
函数输出加密后的字符串。
#include <stdio.h>// 对单个字符进行译码的函数
char decode_char(char c) {if (c >= 'A' && c <= 'Z') {// 大写字母的处理return (c - 'A' + 4) % 26 + 'A';}else if (c >= 'a' && c <= 'z') {// 小写字母的处理return (c - 'a' + 4) % 26 + 'a';}// 如果不是字母,直接返回原字符return c;
}int main() {char input[100];// 读取输入的密码scanf("%s", input);int i = 0;while (input[i] != '\0') {// 对每个字符进行译码input[i] = decode_char(input[i]);i++;}// 输出译码后的密码printf("%s\n", input);return 0;
}