解题思路:本题乍一看十分简单,不就是字母后移嘛,用对应ASCII码来看就是数值+1,除了字母z要单独讨论把它变成字母a。但是如果这么写代码大概率会出错,为什么呢?因为题目设下了很难发现的陷阱,那就是非小写字母该怎么处理呢?很多人会注意到空格,因为空格本身也是一个字符,如果不加限定那么空格本身也会导致输出!(在ASCII表里面!正好是空格的下一个字符)所以第二层陷阱就是编写一个判断语句屏蔽掉输入的空格,但是你会发现这样依然存在答案错误。实际上空格是不需要也不应该屏蔽的,测试样例中输出字母中间的那个空格不是我们代码里面printf语句中额外加一个空格,而是把输入的空格原样挪下来!所以大家明白了吧,这个题目只要求小写字母a-z的转换,其它字符是要原样输出的!因此我们编写一个判断语句只变换小写字母a-z,其它字符该是啥还是啥,原样输出。

注意事项:

参考代码:

#include <stdio.h>

int main()

{

    char letter;

    while(scanf("%c",&letter)!=EOF)

    {

        

        if(letter>='a' && letter<='z')  // 只处理小写字母

        {

            if(letter=='z')//z单独讨论

            {

                printf("a");

            }

            else

            {

                letter=letter+1;

                printf("%c",letter);//其他字母就正常往后挪一位

            }

        }

        else 

        {

            printf("%c",letter);//非小写字母字符原样输出

        }

        

    }

    return 0;

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论