原题链接:恺撒密码
解题思路:
首先我们需要判断输入的哪一行是我们需要的字符串
通过题目我们知道,每输入三行中的第二行是我们想要的
那么我们可以定义一个变量 n 来记录输入的次数,当n对3取余等于2即 n % 3 == 2 , 此时所输入的就是我们需要的字符串
接下来只需要对大写字母进行处理即可
有一个简便的处理方法就是:
s[i] = 'Z' - ('Z' - (s[i] - 5)) % 26;
将字符减去5后与 'Z' 求差,再对26取余,此时得到的是字符与 'Z' 的距离,再次与 'Z' 求差即可
此前我们做过一道类似的题目,详情请看这篇文章:[编程入门]密码破译-题解(C语言代码)
参考代码:
#include <stdio.h>
#include <string.h>
int main()
{
char s[201]; //定义一个长度200的字符数组
int n = 1; //定义计数变量n,初始化为1
do
{
gets(s); //输入字符串
if (n % 3 == 2) //判断第n次输入是否为三行中的第二行
{
for (int i = 0; s[i] != '\0'; i++)
{
if (s[i] >= 'A' && s[i] <= 'Z') //判断字符是否为大写字母
{
s[i] = 'Z' - ('Z' - (s[i] - 5)) % 26; //对大写字母进行处理
}
}
puts(s); //输出字符串
}
} while (strcmp(s, "ENDOFINPUT") != 0 && n++); //判断输入是否结束并使n自加
return 0;
}0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复