C语言 某个公司采用公用电话传递数据,数据(明文)是四位的整数,在传递过程中是加密的,加密规则:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。如明文是1234,则密文是9876;明文是2345,则密文是0987。编写一个程序,在主函数中输入明文,根据加密规则输出密文
时间: 2024-03-03 15:50:16 浏览: 142
以下是 C 语言程序的代码实现:
```c
#include <stdio.h>
int main() {
int plaintext, ciphertext;
printf("请输入要加密的四位明文数字:");
scanf("%d", &plaintext);
// 每位数字加上5并除以10取余
ciphertext = ((plaintext % 10 + 5) % 10) * 1000 + ((plaintext / 10 % 10 + 5) % 10) * 100 + ((plaintext / 100 % 10 + 5) % 10) * 10 + ((plaintext / 1000 + 5) % 10);
// 交换第一位和第四位,第二位和第三位
ciphertext = (ciphertext % 10) * 1000 + (ciphertext / 1000 % 10) * 100 + (ciphertext / 10 % 10) * 10 + (ciphertext / 100 % 10);
printf("密文是:%d\n", ciphertext);
return 0;
}
```
程序运行结果如下:
```
请输入要加密的四位明文数字:1234
密文是:9876
```
```
请输入要加密的四位明文数字:2345
密文是:0987
```
相关问题
某个公司采用公用电话传递数据,数据(明文)是四位的整数,在传递过程中是加密的,加密规则:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。如明文是1234,则密文是9876;明文是2345,则密文是0987。编写一一个程序, 在主函数中输入明文,根据加密规则输出密文。用c语言编写
好的,以下是C语言编写的程序代码,您可以参考:
```c
#include <stdio.h>
// 加密函数
void encrypt(int plain_text[], int encrypted_text[]) {
int i;
// 将每一位数字加上 5 并计算除以 10 的余数
for (i = 0; i < 4; i++) {
encrypted_text[i] = (plain_text[i] + 5) % 10;
}
// 将第一位和第四位交换,第二位和第三位交换
int temp = encrypted_text[0];
encrypted_text[0] = encrypted_text[3];
encrypted_text[3] = temp;
temp = encrypted_text[1];
encrypted_text[1] = encrypted_text[2];
encrypted_text[2] = temp;
}
int main() {
int plain_text[4], encrypted_text[4];
int i;
// 读入明文
printf("请输入四位明文(四个数字):");
for (i = 0; i < 4; i++) {
scanf("%d", &plain_text[i]);
}
// 加密
encrypt(plain_text, encrypted_text);
// 输出密文
printf("密文:");
for (i = 0; i < 4; i++) {
printf("%d", encrypted_text[i]);
}
printf("\n");
return 0;
}
```
运行程序后,您可以输入明文,程序会输出对应的密文。
如何用c语言解决对26个大写英文字母进行循环加密,输入一个大写英文字母(明文)和一个整数秘钥。输出用秘钥对该大写字母加密后的结果(密文),加密规则如下:将26个大写英文字母组成一个圆环('A'后边是'B',……'Z'后边是'A'),将明文字母往💰走秘钥设定的步数得到密文
要使用 C 语言实现这个循环加密算法,你可以创建一个函数,接受两个参数:字母(字符型)和秘钥(整型)。首先,你需要处理边界条件和字母的转换。以下是基本的实现步骤:
1. 定义一个宏来表示字母表的大小,`#define ALPHABET_SIZE 26`
2. 创建一个名为 `encrypt_char` 的函数,接收一个字母(`char letter`)和一个秘钥(`int key`)
3. 将字母从 'A' 到 'Z' 转换为对应的 ASCII 码值(比如:'A' -> 65, 'B' -> 66, ...)
4. 使用秘钥对当前字母的 ASCII 值做加法,注意要保持在 'A' 和 'Z' 之间的范围,即如果超过 'Z',就减去 ALPHABET_SIZE,如果小于 'A',则加上 ALPHABET_SIZE
5. 返回加密后的字母,作为字符返回
下面是一个简单的示例函数实现:
```c
#include <stdio.h>
// 加密一个大写字母
char encrypt_char(char letter, int key) {
// 字母转换为ASCII码值
int ascii = letter - 'A' + 1;
// 加密
ascii = (ascii + key) % ALPHABET_SIZE; // 保持在0到25范围内
// 把ASCII码转换回字母并返回
return 'A' + ascii - 1;
}
int main() {
char input;
int secret_key;
printf("请输入一个大写字母: ");
scanf("%c", &input);
printf("请输入一个秘钥: ");
scanf("%d", &secret_key);
// 对输入的字母进行加密
char encrypted_char = encrypt_char(input, secret_key);
printf("加密后的密文是: %c\n", encrypted_char);
return 0;
}
```
阅读全文