编写一个程序,能从键盘接收一串大写字母,输入回车表示结束,输出加密后的字符。C语言
时间: 2024-09-28 12:10:25 浏览: 20
在C语言中,我们可以编写一个简单的程序来实现这个需求,这里我们使用凯撒密码(Caesar Cipher)作为加密算法,这是一种替换式加密,通过将字母按照固定位移进行替换。以下是示例代码:
```c
#include <stdio.h>
#include <ctype.h>
// 加密函数
char encrypt(char c, int shift) {
if (isupper(c)) { // 检查是否是大写字母
return ((c - 'A' + shift) % 26) + 'A'; // 对于大写字母,循环处理加密
} else {
printf("只支持大写字母。\n");
return c; // 如果不是大写字母,则原样返回
}
}
int main() {
char input;
int shift = 3; // 设置默认的偏移量,可以根据需要修改
printf("请输入大写字母(输入空格或回车结束):");
while((input = getchar()) != '\n' && input != EOF) { // 循环读取输入直到遇到换行符
output = encrypt(input, shift); // 加密字符
printf("%c", output);
}
return 0;
}
```
相关问题
c语言输入一个以回车结束的字符串(少于80个字符),将其中的大写字母用下面的规则进行加密处理,其余字符不变,输出加密后的字符串。 加密规则:A变成Z,B变成Y....... ,其他字符不变。
下面是一个简单的 C 语言程序实现该加密规则:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[80];
printf("请输入字符串:");
fgets(str, sizeof(str), stdin);
printf("加密后的字符串为:");
for (int i = 0; str[i] != '\0' && str[i] != '\n'; i++) {
if (isupper(str[i])) {
putchar('Z' - (str[i] - 'A'));
} else {
putchar(str[i]);
}
}
return 0;
}
```
程序的思路如下:
1. 首先用 `fgets()` 函数读取输入的字符串,保证不会超过 80 个字符;
2. 然后遍历字符串,对于每个字符,如果是大写字母,则进行加密处理,否则不变;
3. 加密处理时,将字符距离 'A' 的距离减去 'Z',得到的结果就是加密后的字符;
4. 最后用 `putchar()` 函数输出加密后的字符串。
C语言用循环实现:输入一个字符串,以回车符结束,将该字符串中每个字符进行移位加密后输出。 加密规则:每个字母往后移3位,x,y,z分别变成a,b,c,其他字母不变。
下面是使用循环实现该功能的C语言代码:
```c
#include <stdio.h>
int main() {
char str[100]; // 用于存储输入的字符串
printf("请输入字符串:");
fgets(str, 100, stdin); // 读取输入的字符串
// 对每个字符进行移位加密并输出
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = (str[i] - 'a' + 3) % 26 + 'a';
} else if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = (str[i] - 'A' + 3) % 26 + 'A';
}
printf("%c", str[i]);
}
return 0;
}
```
注意,我们使用了 `fgets` 函数来读取用户输入的字符串,因为它可以在读取完字符串后自动添加一个回车符(`\n`),这样我们就可以利用字符串的结束标志符 `\0` 来判断字符串是否已经结束。在循环中,我们首先判断字符是否为小写字母或大写字母,然后根据加密规则进行移位加密,并输出加密后的字符。