输入格式:
输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。
输出格式:
输出加密后的结果字符串。
基于Monster 组和GPT的调写:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 80
int main() {
char str[MAX_LEN + 1]; // 输入的字符串
int offset; // 偏移量
int len; // 字符串长度
// 输入字符串
printf("请输入一个字符串(少于80个字符):\n");
fgets(str, MAX_LEN + 1, stdin);
len = strlen(str);
// 去掉字符串末尾的回车符
if (len > 0 && str[len - 1] == '\n') {
str[len - 1] = '\0';
len--;
}
// 输入偏移量
printf("请输入一个整数偏移量:\n");
scanf("%d", &offset);
// 对字符串进行加密
for (int i = 0; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
// 小写字母的情况
str[i] = 'a' + (str[i] - 'a' + offset) % 26;
} else if (str[i] >= 'A' && str[i] <= 'Z') {
// 大写字母的情况
str[i] = 'A' + (str[i] - 'A' + offset) % 26;
}
}
// 输出加密后的字符串
printf("加密后的字符串为:%s\n", str);
return 0;
}
供参考:
#include <stdio.h>
int main()
{
char str[81];
int offset, i;
gets(str);
scanf("%d", &offset);
for (i = 0; str[i]; i++)
{
if (str[i] >='A' && str[i] <= 'Z')
str[i] = (str[i] - 'A' + offset + 26) % 26 + 'A';
else if (str[i] >= 'a' && str[i] <= 'z')
str[i] = (str[i] - 'a' + offset + 26) % 26 + 'a';
}
printf("%s", str);
return 0;
}
关于预定义内容的两篇详细介绍,同样是干货满满的文章,不要错过噢~
【C语言深度解剖】一篇解决程序的环境【编译+链接详解】让面试官给我们竖起大拇指
【预定义】C语言预定义代码(宏、条件编译等)内容介绍【最全的保姆级别教程】