解题思路:
首先我们需要判断输入的哪一行是我们需要的字符串
通过题目我们知道,每输入三行中的第二行是我们想要的
那么我们可以定义一个变量 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语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:736 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:641 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1059 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:805 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1260 |
三角形 (C++代码)递推浏览:825 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:600 |
printf基础练习2 (C语言代码)浏览:796 |
模拟计算器 (C++代码)浏览:885 |
简单的a+b (C语言代码)浏览:444 |