美文网首页C语言新手家园(1万钻以下)
郑州轻工业大学oj题解(c语言)1064: 加密字符

郑州轻工业大学oj题解(c语言)1064: 加密字符

作者: 缘点点 | 来源:发表于2019-12-10 22:58 被阅读0次

今天偶然发现了这道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。
    其他没有太多需要注意的地方了,如果还不够理解的同学可以在下面评论区提问,我会尽量回答。

相关文章

网友评论

    本文标题:郑州轻工业大学oj题解(c语言)1064: 加密字符

    本文链接:https://www.haomeiwen.com/subject/vrengctx.html