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',并输出。

  • 变量初始化 :定义了五个字符变量 c1c2c3c4c5,并分别初始化为 'C''h''i''n''a'
  • 译码运算
    • 对于大写字母,先将其减去 'A' 得到一个 0 到 25 之间的整数,代表该字母在字母表中的位置。
    • 然后加上 4,表示向后移动 4 个位置。
    • 接着对 26 取模,以处理字母表循环的情况(即从 'Z' 再往后会回到 'A')。
    • 最后再加上 'A',将结果转换回对应的大写字母。
    • 对于小写字母,处理方式类似,只是将 'A' 换成 'a'
  • 输出结果 :使用 printf 函数输出加密后的字符串。
cpp 复制代码
#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;
}
相关推荐
西阳未落1 小时前
C++基础(21)——内存管理
开发语言·c++·面试
我的xiaodoujiao2 小时前
Windows系统Web UI自动化测试学习系列2--环境搭建--Python-PyCharm-Selenium
开发语言·python·测试工具
callJJ2 小时前
从 0 开始理解 Spring 的核心思想 —— IoC 和 DI(2)
java·开发语言·后端·spring·ioc·di
超级大福宝2 小时前
使用 LLVM 16.0.4 编译 MiBench 中的 patricia遇到的 rpc 库问题
c语言·c++
hsjkdhs3 小时前
万字详解C++之构造函数析构函数
开发语言·c++
Lin_Aries_04214 小时前
容器化简单的 Java 应用程序
java·linux·运维·开发语言·docker·容器·rpc
techdashen4 小时前
12分钟讲解Python核心理念
开发语言·python
闭着眼睛学算法5 小时前
【华为OD机考正在更新】2025年双机位A卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】
java·c语言·javascript·c++·python·算法·华为od
山海不说话5 小时前
Java后端面经(八股——Redis)
java·开发语言·redis
郝学胜-神的一滴5 小时前
谨慎地迭代函数所收到的参数 (Effective Python 第31条)
开发语言·python·程序人生·软件工程