美文网首页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