小韦老师@神犇营-my0074-数据加密

博客围绕数据加密展开,介绍其概念及作用,给出一个加密程序题目,要求对6个字符按ASCII码奇偶性加密,偶数对应密文为0,奇数对应为1。还给出题解思路,包括变量定义、类型转换、奇偶判断等,最后提及完整代码。

小韦老师@神犇营-my0074-数据加密

题目:

描述

数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它的核心是密码学。

数据加密仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。

请你写一个程序,对信息进行加密。加密的规则:给定 6 个字符,从第一个字符开始,若字符的 ASCII 码为偶数,则密文对应位置为 0,若 ASCII 码为奇数,则密文对应位置为 1。

输入

输入仅一行,为 6 个字符。

输出

输出仅一行,为对应的密文。

输入样例1

@#shu7

输出样例1

011011

提示

‘@’ 的 ASCII 码是 64,为偶数,则密文对应位置为 0

‘#’ 的 ASCII 码是 35,为奇数,则密文对应位置为 1

‘s’ 的 ASCII 码是 115,为奇数,则密文对应位置为 1

‘h’ 的 ASCII 码是 104,为偶数,则密文对应位置为 0

‘u’ 的 ASCII 码是 117,为奇数,则密文对应位置为 1

‘7’ 的 ASCII 码是 55,为奇数,则密文对应位置为 1

题解:

思路:

1.定义 6 个字符型变量,并将这 6 个字符型变量输入:

char c1, c2, c3, c4, c5, c6;
cin >> c1 >> c2 >> c3 >> c4 >> c5 >> c6;

2.字符类型的变量可以用 (int) 来进行强制类型转换,转成整数 (ASCII 码)。
而对于一个整数来说,除以 2 的余数不是 0 就是 1,所以可以定义 6 个 int 型的变量,
并且初始化为 1,然后依次对每个字符的 ASCII 码进行奇偶判断,若模 2 等于 0,则说明
是偶数,则对应的 int 型的变量要被赋值为 0 (否则什么也不做,也就是对应的 int 型的
变量依然是 1,也即 ASCII 码为奇数)。

int n1 = 1, n2 = 1, n3 = 1, n4 = 1, n5 = 1, n6 = 1;

// 必须判断是否为 0,而不是 1,因为有负数,负奇数为 -1,而正的偶数或者负的偶数模 2 都是 0

if ((int)c1 % 2 == 0) n1 = 0;
if ((int)c2 % 2 == 0) n2 = 0;
if ((int)c3 % 2 == 0) n3 = 0;
if ((int)c4 % 2 == 0) n4 = 0;
if ((int)c5 % 2 == 0) n5 = 0;
if ((int)c6 % 2 == 0) n6 = 0;

3.依次将 n1, n2, n3, n4, n5, n6 输出。

完整代码:
#include <bits/stdc++.h>

using namespace std;

int main() {

	char c1, c2, c3, c4, c5, c6;
	cin >> c1 >> c2 >> c3 >> c4 >> c5 >> c6;

	int n1 = 1, n2 = 1, n3 = 1, n4 = 1, n5 = 1, n6 = 1;
	// 必须判断是否为0,而不是1,因为有负数,负奇数为-1 
	if ((int)c1 % 2 == 0) n1 = 0;
	if ((int)c2 % 2 == 0) n2 = 0;
	if ((int)c3 % 2 == 0) n3 = 0;
	if ((int)c4 % 2 == 0) n4 = 0;
	if ((int)c5 % 2 == 0) n5 = 0;
	if ((int)c6 % 2 == 0) n6 = 0;
	
	cout << n1 << n2 << n3 << n4 << n5 << n6;

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值