在C中编码一个字母表,显示前一个和后一个字母

时间:2016-08-06 01:18:19

标签: c

所以我需要在C中发生这种情况,一直在考虑它一个小时左右而且无法弄清楚如何去做,或者如何向谷歌询问这个特定的东西,它必须与输入的任何字母一起使用。

如何计算给定字母的字母表中的下一个和上一个字母?

这是一个链接: http://imgur.com/bRdLonZ

enter image description here

2 个答案:

答案 0 :(得分:0)

请查看此示例应该执行您想要的操作。你必须记住考虑相对位置,因为A-Z位于ASCII的中间并且记得在字母A和Z处绕过边缘,这样A在Z之后,Z在A之前。

#include <stdio.h>
#include <ctype.h>

int main() {
    int resp;
    printf("Please input an uppercase letter: ");
    resp = getchar();
    int i = resp;
    if ((resp - 1) < 'A')
        i = resp + 26;
    printf("The lowercase version of the letter is: %c\n", tolower(resp));
    printf("The letter %c comes before the letter %c in the alphabet \n", i - 1, resp);
    i = resp;
    if ((resp + 1) > 'Z')
        i = resp - 26;
    printf("The letter %c comes after the letter %c in the alphabet \n", (i + 1), resp);
    printf("%c is letter nr %d in the alphabet \n", resp, resp - 'A' + 1);
}

测试

Please input an uppercase letter: C
The lowercase version of the letter is: c
The letter B comes before the letter C in the alphabet 
The letter D comes after the letter C in the alphabet 
C is letter nr 3 in the alphabet 

Process finished with exit code 0

答案 1 :(得分:0)

虽然Dac Saunders已经给出了一个很好的解释和一个好的草图,但我认为有一个稍微不同的例子可能也会有所帮助。

a.o:
(__TEXT,__text) section
_main:
0000000000000000    pushq   %rbp
0000000000000001    movq    %rsp, %rbp
0000000000000004    subq    $0x10, %rsp
0000000000000008    leaq    _main.a(%rip), %rax
000000000000000f    movl    %edi, -0x4(%rbp)
0000000000000012    movq    %rsi, -0x10(%rbp)
0000000000000016    movq    %rax, %rdi
0000000000000019    callq   _doit
000000000000001e    leaq    _main.b(%rip), %rdi
0000000000000025    callq   _doitt
000000000000002a    leaq    _main.c(%rip), %rdi
0000000000000031    callq   _doittt
0000000000000036    leaq    _main.d(%rip), %rdi
000000000000003d    callq   _doitttt
0000000000000042    leaq    _main.e(%rip), %rdi
0000000000000049    callq   _doittttt
000000000000004e    xorl    %eax, %eax
0000000000000050    addq    $0x10, %rsp
0000000000000054    popq    %rbp
0000000000000055    retq