小韦老师@神犇营-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;
}