解题思路:本题乍一看十分简单,不就是字母后移嘛,用对应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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复