C语言蓝桥杯1003: [编程入门]密码破译
要将"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;
}