Как напечатать ближайший алфавитный код c для ввода символов в программе C? - PullRequest
0 голосов
/ 01 февраля 2020

Вот точный вопрос:

Напишите программу C, которая принимает символ в качестве ввода и печатает буквенный символ c (0-9, AZ, az - это буквы алфавита (1012 * символов), наиболее близкие к этому символу. ПРИМЕЧАНИЕ. Если входной символ равноудален от двух значений альфа-цифры c, то можно напечатать любое из них.

Я знаю, что нам придется использовать таблицу ASCII и сделать несколько случаев, но я могу не понять, как именно это сделать.

1 Ответ

1 голос
/ 01 февраля 2020

Да, решение основывается на значениях ASCII. Вы можете просто использовать if-else-if ladder , чтобы определить ближайший буквенный символ c к входному символу. Если на входе уже указан алфавитный символ c, вы можете использовать встроенные функции isalpha и isdigit, чтобы быстро найти решение. Если это не так, используйте любой из операторов сравнения < или > и выясните, в каком конце этих диапазонов 0-9 , AZ , az Ваше решение заключается в.

Порядок, в котором вы выполняете сравнения, важен для сокращения количества сравнений. Вот справочная таблица ASCII .

Поскольку вы новичок в этом сайте, возьмите мой код и изучите его. Но вы не всегда можете получить ваше решение в виде полного кода здесь.

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

int main()
{
    unsigned char input, tmp, result;

    printf("Enter the input character: ");
    scanf("%c", &input);

    if (isalpha(input))
    {
        tmp = input - 1;
        result = isalpha(tmp) ? tmp : input + 1;
    }
    else if (isdigit(input))
    {
        tmp = input - 1;
        result = isdigit(tmp) ? tmp : input + 1;
    }
    else if (input < '0')
    {
        result = '0';
    }
    else if (input > '9' && input < 'A')
    {
        result = (input - '9' > 'A' - input) ? 'A' : '9';
    }
    else if (input > 'Z' && input < 'a')
    {
        result = (input - 'Z' > 'a' - input) ? 'a' : 'Z';
    }
    else
    {
        result = 'z';
    }

    printf("Alphanumeric character closest to '%c' is '%c'", input, result);

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...