使用指针作参数,设计一函数void jiami(char *ch)实现对小写字母的简单加密,把当前输入的字母变成后面第3个字母(如a变成d),如果是最后三个字母x、y、z则分别变成a、b、c。 最后在main函数中调用jiami函数,用户输入一个小写字母后,程序输出加密后的字母
时间: 2024-02-22 22:59:27 浏览: 16
好的,我来帮您设计这个函数。
函数原型为:
```c
void jiami(char *ch);
```
函数实现如下:
```c
void jiami(char *ch) {
if(*ch >= 'a' && *ch <= 'z') {
if(*ch >= 'x' && *ch <= 'z') {
*ch = 'a' + (*ch - 'x');
} else {
*ch += 3;
}
}
}
```
在这个函数中,首先判断输入的字符是否为小写字母,如果不是则不进行加密。如果是小写字母,则根据其在字母表中的位置进行加密。如果是最后三个字母,则分别变成a、b、c。
在main函数中调用jiami函数,可以这样实现:
```c
int main() {
char ch;
printf("请输入一个小写字母:");
scanf("%c", &ch);
jiami(&ch);
printf("加密后的字母为:%c\n", ch);
return 0;
}
```
在这个程序中,先让用户输入一个小写字母,然后调用jiami函数进行加密,最后输出加密后的字母。需要注意的是,在调用jiami函数时需要使用指针将字符的地址传递给函数。
相关问题
重新编写this.py文件,将文件另存为this_jiami.py文件,对this.py文件生成的明文文本进行加密。将代码窗口及运行结果截图到下面空白处。
很抱歉,作为 AI 我无法提供屏幕截图。但是我可以告诉您如何进行 Python 文件的加密。
一种常见的方法是使用 Python 的加密模块 `cryptography`,可以使用其中的 Fernet 对称加密算法对文件进行加密。
以下是一个示例代码,可以对 `this.py` 文件进行加密并保存为 `this_jiami.py` 文件:
```python
from cryptography.fernet import Fernet
# 读取明文文本
with open('this.py', 'rb') as f:
plaintext = f.read()
# 生成密钥
key = Fernet.generate_key()
# 使用密钥加密文本
cipher = Fernet(key)
ciphertext = cipher.encrypt(plaintext)
# 将密钥和密文保存到文件中
with open('this_jiami.py', 'wb') as f:
f.write(key)
f.write(ciphertext)
```
运行该代码后,可以得到一个名为 `this_jiami.py` 的加密文件,其中包含了密钥和加密后的文本。需要注意的是,加密后的文件不能直接运行,需要在程序中先读取密钥和密文,并使用密钥进行解密后再进行执行。
解释这段代码import numpy as np import numpy.linalg as alg plaintext='Launch';pwdMatrix=np.mat([[1,1],[3,0]]) p=[] for i in plaintext: p.append(ord(i)) p=np.array(p);p=p.reshape(2,3);p=np.mat(p)#将密文码转为矩阵 jiami=np.dot(pwdMatrix,p)#左乘加密矩阵 jia=np.array(jiami)#矩阵转为数组才好继续操作!!!! print(jia) print(type(jia)) print(jia.reshape((6,))) jia=list(jia.reshape((6,)))#注意这一句!reshape((6,))什么意思? print(jia) print(type(jia)) #print(jia) #print(type(jia)) jiamitext='' for i in jia:#遍历转换为加密文 jiamitext+=chr(i) print(jiamitext) ''' jiamilist=[chr(i) for i in jia] jiamitext=''.join(jiamilist)#利用join函数 print(jiamitext) ''' jiemi=np.dot(pwdMatrix.I,jiami)#左乘加密矩阵的逆来解密 jie=np.array(jiemi) jie=list(jie.reshape((6,))) jiemitext='' for i in jie: jiemitext+=chr(int(i)) print(jiemitext)
这段代码实现了一个简单的加密和解密过程。首先,它导入了numpy库,用于进行数值计算和线性代数操作。
代码中的plaintext变量存储了要加密的明文文本,这里是"Launch"。pwdMatrix是一个2x2的加密矩阵,用于进行加密和解密操作。
接下来,代码将明文转换为对应的ASCII码,并将其存储在p列表中。然后,将p转换为一个2x3的矩阵,并用pwdMatrix进行矩阵乘法运算,得到加密后的结果jiami。
为了继续对jiami进行操作,代码将其转换为数组形式,并打印出其类型和形状。reshape((6,))是将数组形状调整为一维数组(长度为6)的操作。
然后,代码将一维数组jia转换为列表形式,并打印出类型和内容。接着,通过遍历列表jia,将其转换回对应的字符,并存储在jiamitext变量中,即加密后的文本。
接下来是解密过程,代码使用pwdMatrix的逆矩阵进行矩阵乘法运算,得到解密后的结果jiemi。然后,将jiemi转换为数组形式,并将其形状调整为一维数组。
最后,代码通过遍历一维数组jie,并将其转换为对应的整数值和字符,最终得到解密后的文本jiemitext。
需要注意的是,代码中还包含了一部分注释掉的代码,用于实现相同的功能。其中,利用了列表推导式和join函数来简化代码。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)