博主现在仍为一名大学生,某次在完成老师布置的PTA选择结构练习时遇到了这道题。博主通过拍照搜题和请教往届学姐,都是通过if结构来实现的。博主想要和他们有点不一样,便打算使用switch结构来实现(主要原因是因为自己先写了switch结构的代码,实在不想再写一遍if结构的代码了)。博主请教了很多人都说case后面只能接整型常量或常量表达式,所以导致一直过不去。就在快要放弃的时候,我在优快云上看到一篇文章说case后可以接范围表达式,文章发布者名为铁头小哥,具体可前往他的博客进行查看(链接在下面)。用法为case a ... b(a、b均为数字,且省略号前后两侧有空格)通过博主简单地修改之后,最终,博主使用switch结构完成这道题目。C语言switch case语句的case后面不能接范围?_铁头小哥的博客-优快云博客_case后面可以跟范围吗
问题如下:
从键盘输入一个字符,判断该字符是否大写字母、小写字母、数字字符或其他字符。分别输出对应的提示信息。
输入格式:
输入一个字符。
输出格式:
如果该字符是大写字母,则输出“upper”;若是小写字母,则输出“lower”;若是数字字符,则输出“digit”;若是其他字符,则输出“other”。(输出不含双引号)。
输入样例:
E
输出样例:
upper
解题思路:首先要知道的是小写字母的范围是97-122,大写字母的范围是65-90,数字字符的范围是48-57。其他的只需要使用default即可。我们只需定义一个字符常量,再通过键盘输入,最后再通过选择结构来判断字符类型。
代码十分简单,如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char i;
scanf("%c",&i);
switch (i)
{
case 65 ... 90:
printf("upper");
break;
case 97 ... 122:
printf("lower");
break;
case 48 ... 57:
printf("digit");
break;
default:
printf("other");
}
return 0;
}
代码长度要远远短于if结构的长度,且符合PTA的结构要求。这是博主第二次发表文章,可能存在某些问题,欢迎各位指出,谢谢!
2022年11月27日