题目内容:
当用户输入一个英文字母后,程序能够按照字母表的顺序打印出3个相邻的字母,其中用户输入的字母在中间。
程序运行结果如下:
d
cde
这里假设字母表首尾两个字母是相连的。若输入字母Z,则程序输出YZA。
输入格式:
一个字母字符,可能为大写,也可能为小写。
输出格式:
连续3个字符,大小写不变。
输入样例:
d
输出样例:
cde
解题思路:首先我们要知道ASCLL码值A-65,Z-90,a-97,z-122,接着我们要对于这个题设计算法。
- 找出这个字母的前一个
- 找出这个字母的后一个
- 找出在A~Z,a-z之间存在的规律
在那之后,我们不难发现a-z有26个字母,所以再找出前一个字母我们就可以写出
m=(x-‘A’-1+26)%26+‘A’,同理后一个字母就是n=(x-‘A’+1)%26+‘A’,这是对大写字母的设计,小写也是如此,所以我们就可以写出
#include<iostream>
using namespace std;
int main()
{
char x,m,n;
cin>>x;
if(x>=65&&x<=90){
m=(x-'A'-1+26)%26+'A';
n=(x-'A'+1)%26+'A';
}
else{
m=(x-'a'-1+26)%26+'a';
n=(x-'a'+1)%26+'a';
}
cout<<m<<x<<n<<endl;
return 0;
}