用C语言按如下规则对一个三位的正整数加密,各数位上的数都用加7的和除以10的余数取代,再把个位与百位交换。请根据加密规则进行解密。
时间: 2024-11-25 12:09:44 浏览: 3
在C语言中,我们可以创建一个函数来完成这个加密和解密的过程。首先,我们编写一个加密函数`encrypt()`,它接收一个三位数,应用规则对其每个数字操作,并返回结果。然后,编写一个解密函数`decrypt()`,逆向操作加密后的数字。
```c
#include <stdio.h>
#include <math.h>
// 加密函数
int encrypt(int num) {
int encrypted = 0;
int remainder;
// 分离每一位
int hundreds = num / 100; // 百位
int tens = (num % 100) / 10; // 十位
int ones = num % 10; // 个位
// 应用加密规则
remainder = (hundreds + 7) % 10;
encrypted += remainder * pow(10, 2); // 百位替换
remainder = (tens + 7) % 10;
encrypted += remainder * 10; // 十位不变
remainder = (ones + 7) % 10;
encrypted += remainder; // 个位与百位交换位置
return encrypted;
}
// 解密函数
int decrypt(int encrypted) {
int decrypted = 0;
int temp;
// 按原顺序恢复数字
temp = encrypted % 10;
decrypted = temp; // 个位
encrypted /= 10;
temp = encrypted % 100; // 取出新的个位作为十位
decrypted *= 10;
decrypted += temp; // 加回十位
encrypted /= 100;
decrypted += encrypted * 100; // 加回百位
return decrypted;
}
int main() {
int original, encrypted, decrypted;
printf("请输入一个三位正整数:");
scanf("%d", &original);
encrypted = encrypt(original);
printf("加密后的数字是:%d\n", encrypted);
decrypted = decrypt(encrypted);
printf("解密后的原始数字是:%d\n", decrypted);
return 0;
}
```
阅读全文