题目来源:大工慕课 链接
作者:Caleb Sung
题目要求
从屏幕上输入一个字符,如果不是英文字母,输出“这不是英文字母,请重新输入”,然后重新输入字符,如果是英文字母,以大写字母的形式输出字母表中它前面的字符和后面的字符,如果输入的字符为‘a’或‘A’,输出“没有前面的字母”,如果是‘z’或‘Z’输出“没有后面的字母”(如果使用的VC++不支持中文,则把相应的中文输出换成英文输出)。
题目提示
如输入不是字母,则重新输入,这时要考虑回车的问题,要先接收上一次输入的回车字符。
注意事项
- 不要忘记switch每个选择分支(case)后面加一个break;,否则会按照各种case的顺序输出各种分支的结果……
- default分支下的else部分即大写字母,写成
else if(ch>'A'&&ch<'Z')
效果也是一样的
解答示范
#include<stdio.h>
int main()
{
char ch,ch1,ch2;
printf("请输入一个字符。\n");
ch=getchar();
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
{
switch(ch)
{
case 'a':
printf("没有前面的字母。\n");break;
case 'A':
printf("没有前面的字母。\n");break;
case 'z':
printf("没有后面的字母。\n");break;
case 'Z':
printf("没有后面的字母。\n");break;
default:
{
if(ch>'a'&&ch<'z')
{
ch1=ch+'A'-'a'-1;
ch2=ch+'A'-'a'+1;
printf("这个字母两边的字母分别是%c和%c。\n",ch1,ch2);
}
else
{
ch1=ch-1;
ch2=ch+1;
printf("这个字母两边的字母分别是%c和%c。\n",ch1,ch2);
}
}
}
}
else
printf("这个字符不是一个英文字母。\n");
return 0;
}