留存,以后看

不知道为什么自己写的不对,以后再来看问题。

1

7-4 输出英文字母的前驱和后继字母 (10 分)

从键盘输入一个英文字母,输出其前驱字母(即前一个字母)、后继字母(即后一个字母)及其ASCII值。比如输入的字母是b,则前驱字母是a,后继字母是c。而如果输入的字母是a,则前驱字母是z,后继字母是b;如果输入的字母是z,则前驱字母是y,后继字母是a。大写字母的前驱后继字母求法与小写字母相同。

输入格式:

输入一个英文字母。

输出格式:

第一行输出该字母的前驱字母及其ASCII值,第二行输出后继字母及其ASCII值,字母与ASCII值之间用一个空格分隔。

输入样例1:

b

结尾无空行

输出样例1:

a 97
c 99

结尾无空行

输入样例2:

a

结尾无空行

输出样例2:

z 122
b 98

结尾无空行

正确答案:

#include <stdio.h>
int main ()
{
    char m,f,l;
    m=getchar();
 f=m-1;
    l=m+1;
    
 if(m>='a'&&m<='z')
{
    if(f<'a')
        f='z';
    if(l>'z')
        l='a';
}

    else
{
    if(f<'A')
        f='Z';
    if(l>'Z')
        l='A';
}
            
    printf("%c %d\n",f,f);
    printf("%c %d\n",l,l);
    
   return 0; 
}

我的问题:

1.f<'a'能否直接写成当m='a'等等?(没过编译)

2.大佬的代码

if(f<'a')

f='z'-('a'-f)+1;

if(b>'z')

b='z'-f+'a'-1;

是什么意思?

上一篇:梅花香之苦寒来


下一篇:ASCII表以及案例