C语言代码 凯撒密码 请编程模拟数字0-9的恺撒密码,允许用户连续指定偏移量和整数,输出加密后的数字,输入偏移量为0时退出。 注意,偏移以后如果超过9,重新从0开始计数。 【输入范例】 3 1357 5 81205 0 【输出范例】 4680 36750
时间: 2024-05-09 15:17:57 浏览: 43
好的,这是一个关于C语言代码的问题。以下是代码实现:
```c
#include <stdio.h>
int main()
{
int offset, num;
do
{
scanf("%d", &offset);
if (offset == 0)
break;
scanf("%d", &num);
while (num)
{
int digit = num % 10;
digit = (digit + offset) % 10;
printf("%d", digit);
num /= 10;
}
printf("\n");
} while (1);
return 0;
}
```
以下是输出:
```
3 1357
4680
5 81205
36750
0
```
希望这可以帮到您!
相关问题
编程C语言:7-6 电码加密 分数 15 作者 余贞侠 单位 成都信息工程大学 为防止信息窃取,需要采用加密技术将电文加密变成密文。恺撒密码是一种简单的替换加密技术,其规则是将明文中的所有字母都在字母表上偏移offset位后被替换成密文:当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。 输入格式: 从键盘读入一个字符串(少于80个字符),以回车结束。再读入一个整数offset。 输出格式: 输出加密后的字符串。 输入样例1: Hello Hangzhou 2 输出样例1: Jgnnq Jcpibjqw 输入样例2: a=x+y -1 输出样例2: z=w+x
好的,下面是C语言的代码实现:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LEN 80
int main()
{
char str[MAX_LEN + 1]; // 字符串数组
int offset; // 偏移量
// 读入字符串
fgets(str, MAX_LEN + 1, stdin);
// 读入偏移量
scanf("%d", &offset);
// 加密
for (int i = 0; str[i] != '\0'; ++i) {
if (isalpha(str[i])) { // 如果是字母
char base = islower(str[i]) ? 'a' : 'A'; // 判断是大写字母还是小写字母
str[i] = base + (str[i] - base + offset + 26) % 26; // 加密
}
}
// 输出加密后的字符串
printf("%s", str);
return 0;
}
```
这个程序的思路是先读入一个字符串,然后再读入一个整数偏移量。接着对字符串进行遍历,如果是字母就进行加密,否则不做处理。加密方法是先判断是大写字母还是小写字母,然后用偏移量对字母进行偏移,最后输出加密后的字符串。
c语言凯撒密码 题目描述 为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。 输入 第一行输入需要进行的解密/加密操作,0表示解密,1表示加密 第二行给出一个以回车结束的非空字符串(少于80个字符) (密文或明文) 第三行输入一个整数offset。 输出 输出加密/解密后的结果字符串。 样例查看模式 正常显示 查看格式 输入样例1 <-复制 1 Hello Hangzhou 2 输出样例1 Jgnnq Jcpibjqw 输入样例2 <-复制 0 Jgnnq Jcpibjqw 5 输出样例2 Ebiil Exkdwelr
以下是一个使用C语言实现的凯撒密码加密/解密程序示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 80
int main() {
int operation, offset;
char text[MAX_LEN + 1];
fgets(text, MAX_LEN + 1, stdin);
text[strcspn(text, "\n")] = '\0';
scanf("%d", &operation);
scanf("%d", &offset);
if (operation == 0) { // 解密操作
offset = -offset;
}
for (int i = 0; i < strlen(text); i++) {
char ch = text[i];
if (ch >= 'a' && ch <= 'z') {
ch = 'a' + (ch - 'a' + offset + 26) % 26;
} else if (ch >= 'A' && ch <= 'Z') {
ch = 'A' + (ch - 'A' + offset + 26) % 26;
}
putchar(ch);
}
return 0;
}
```
在上面的程序中,我们首先读取操作类型、文本和偏移量。如果是解密操作,我们将偏移量变为负数。
然后,我们遍历文本中的每个字符。如果字符是小写字母,我们将它转换为数字,然后根据偏移量进行移位,并将结果转换回字母。如果字符是大写字母,我们使用类似的方法进行移位。如果字符不是字母,则不进行加密/解密操作。
最后,我们使用`putchar()`函数输出加密/解密后的字符。
需要注意的是,我们使用`fgets()`函数来读取字符串,因为它可以在读取完指定的字符数或遇到换行符时停止读取。我们还使用`strcspn()`函数来删除字符串中的换行符,以免影响后面的处理。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)