原题链接:恺撒密码
解题思路:
首先我们需要判断输入的哪一行是我们需要的字符串
通过题目我们知道,每输入三行中的第二行是我们想要的
那么我们可以定义一个变量 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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复