c语言 某个公司乘用公用电话传输数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每个数字都加上5后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换
时间: 2025-01-01 22:39:18 浏览: 16
在C语言中,你可以创建一个函数来实现这个加密和解密的过程。首先,我们定义一个函数`encrypt`用于加密输入的四位数,然后定义一个函数`decrypt`用于解密。这里是一个简单的实现:
```c
#include <stdio.h>
// 加密函数
int encrypt(int num) {
int encrypted[4];
// 分割四位数
encrypted[0] = (num % 10) + 5; // 第一位加5并取余10
num /= 10;
encrypted[1] = (num % 10) + 5; // 第二位加5并取余10
num /= 10;
encrypted[2] = (num % 10) + 5; // 第三位加5并取余10
num /= 10;
encrypted[3] = (num + 5) % 10; // 第四位加5并取余10,注意需要先加5
// 交换位置
int temp = encrypted[0];
encrypted[0] = encrypted[3];
encrypted[3] = temp;
temp = encrypted[1];
encrypted[1] = encrypted[2];
encrypted[2] = temp;
return encrypted[0] * 1000 + encrypted[1] * 100 + encrypted[2] * 10 + encrypted[3]; // 组合成新的四位数
}
// 解密函数
int decrypt(int encrypted_num) {
int decrypted[4];
// 取出四位数
decrypted[3] = encrypted_num % 10;
encrypted_num /= 10;
decrypted[2] = encrypted_num % 10;
encrypted_num /= 10;
decrypted[1] = encrypted_num % 10;
encrypted_num /= 10;
decrypted[0] = encrypted_num - 5; // 因为加密时加了5,所以减去5恢复原值
// 交换位置回原来的顺序
int temp = decrypted[0];
decrypted[0] = decrypted[3];
decrypted[3] = temp;
temp = decrypted[1];
decrypted[1] = decrypted[2];
decrypted[2] = temp;
return decrypted[0] * 1000 + decrypted[1] * 100 + decrypted[2] * 10 + decrypted[3];
}
int main() {
int input = 1234;
printf("原始数字: %d\n", input);
int encrypted = encrypt(input);
printf("加密后的数字: %d\n", encrypted);
int decrypted = decrypt(encrypted);
printf("解密后的数字: %d\n", decrypted);
return 0;
}
```
在这个例子中,输入一个四位数`input`,`encrypt`函数会将其加密,`decrypt`函数则还原成原始数值。
阅读全文