今天偶然发现了这道1064,发现他的题目类型和之前蓝桥杯校内赛的第5题非常的相似。可以说会做1064,就摸到了蓝桥杯的门槛~所以今天就带大家好好学习一下这道与ASCII码有关的题目。对蓝桥杯题目感兴趣的也可以点击以下链接看一下👉https://www.jianshu.com/p/89d99b234442
如果对ASCII码类型的题目已经不够熟悉的也可以回头看一下最初的两篇题解,题解
1064: 加密字符
- 题目描述
从键盘输入一批字符,以@结束,按要求加密并输出。 - 输入
从键盘输入一批字符,占一行,以@结束。 - 输出
输出占一行
加密规则:
1)所有字母均转换为小写。
2)若是字母'a'到'y',则转化为下一个字母。
3)若是'z',则转化为'a'。
4)其它字符,保持不变。
#include<stdio.h>
int main()
{
char s;
while(s=getchar(),s!='@')//while(scanf("%c",s),s!='@')
{
if(s>='A'&&s<='Z'){
s=s+32;
}
if(s>='a'&&s<='y'){
s=s+1;
}
else if(s=='z'){
s='a';
}
else
s=s;
printf("%c",s);
}
return 0;
}
- 代码解析:
- 做题先从读题开始,首先是输入:输入一批字符,说明这里要用循环进行输入,以@结束,说明我们要把循环结束的限制条件设置为!=‘@’。所以我们的输入就是 while(s=getchar(),s!='@')。getchar是一个读取字符的函数,这里直接用scanf代替输入也是可以的。
- 接着我们根据加密的规则,对应ASCII码的表逐一用if进行判断与改变。这里要注意,if里面的判断一定要用双==,而不要用=。==表示比较,=表示赋值。
- 这里几个if和else if的选用也有其深意。例如第一个if囊括了所有的大写,所以下面判断小写字母时,这里是没有因果关系的,故第二个依然用if,而第三个用else if是因为这里与上面判断a到y有递进关系,故用else if。
其他没有太多需要注意的地方了,如果还不够理解的同学可以在下面评论区提问,我会尽量回答。
网友评论