«A» представляет 1 в «ch = input [c] -« a »»? - PullRequest
0 голосов
/ 22 апреля 2019

Я работал с некоторыми основными проблемами кодирования, и несколько раз сталкивался с этим синтаксисом "ch = input [c] - 'a" ", и я хотел бы понять его, прежде чем двигаться дальше.

n = strlen(input);
for (c = 0; c < n; c++) {
    ch = input[c] - 'a';
    no[ch]++;
}

Ответы [ 2 ]

3 голосов
/ 22 апреля 2019

'a'=97 формат основан на таблице ASCII и когда вы захотите использовать алфавиты с их номерами, это будет полезно.

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

Как мы видим 'a' - это 48 и, например, для 'b', ch=49-48=1 так что в index=1 вы увидите cb[index]+=1

1 голос
/ 22 апреля 2019
ch = input[c] - 'a';
no[ch]++;

Массив no хранит в элементе i th количество i th строчной буквы из строки input.

Однако, если ваш ввод содержит символы, отличные от строчных, ваш код может сломаться. С другой стороны, предполагается, что вы выделили достаточно места в no для любой буквы.

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