解题思路:


首先我们需要判断输入的哪一行是我们需要的字符串

通过题目我们知道,每输入三行中的第二行是我们想要的

那么我们可以定义一个变量 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.0分

7 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

仲仁 2年前 回复TA