Да, решение основывается на значениях 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;
}