кажется, что этот код является гистограмма рода, который печатает, сколько раз данный знак был введен в консоль, прежде чем он достигнет символа «7».
Следующий код:
for(index=0; index<26; index++)
freq[index] = 0;
просто устанавливает все значения массива в 0. Это происходит из-за того, что в C, переменные, объявленные в блоке области действия (то есть, внутри функция), которые не являются статическими, не имеют определенного значения по умолчанию и поэтому просто содержат мусор, который был в этой памяти, до того, как была объявлена переменная. Это, очевидно, повлияет на результаты, которые отображаются каждый раз, когда они запускаются, или когда они запускаются в другом месте, что не является тем, что вы хотите, я уверен.
while ((c = getchar()) != '7')
{
if (isalpha(c))
freq[tolower(c)-'a']++;
printf("%d", &freq[7]);
}
В следующем разделе использует время цикла, чтобы продолжить прием входного сигнала с помощью GetChar() (который получает следующий символ ввода от STDIN в данном случае), пока символ «7» будет достигнута. Это связано с тем, что присвоение значения (например, «c = getchar()») позволяет использовать значение таким образом, чтобы его можно было сравнить с помощью «! =« 7 ». Это позволяет нам продолжать цикл до тех пор, пока символ, который принят из STDIN, не будет равен «7», после чего цикл while завершится.
Внутри самого цикла он проверяет значение, которое было введено с помощью «isalpha()», которое возвращает true, если символ является буквенной буквой. Используя «tolower()» и возвращая это значение для вычитания символьным значением «a», мы в основном находим, какой символ в алфавите это численно. Например, если бы мы взяли букву «F». Столица «F» хранится как значение 70 в фоновом режиме. tolower() проверяет, является ли он символом верхнего регистра, и если он есть, он возвращает его нижнюю регистрацию (в этом случае «f» == 102). Затем это значение вычитается с помощью «a» (сохраняется как 97), которое возвращает значение 6 (которое при подсчете от 0 является позицией «F» в алфавите). Затем он используется для таргетинга на этот элемент массива и его увеличения, что говорит о том, что введены другие «F» или «f».
maxfreq = freq [25];
for (index = 24; index >= 0; index--)
{
if (freq[index] > maxfreq)
maxfreq = freq[index];
}
В следующем разделе устанавливает переменную «MaxFreq» до последнего значения (было найдено, сколько раз «Z»), и перебирает вниз, изменяя значение MaxFreq к наибольшему значению, которое находится (т.е. , наибольшее количество любого заданного символа, найденного в массиве). Это позже используется для форматирования вывода, чтобы убедиться, что буквы правильно совпадают, а число звезд и пробелов верны.
не могли бы вы уточнить, что вы пытаетесь сделать в этом коде? – Emu
В какой строке кода вы видите или печатаете *, что дает вам проблемы? – Narkha
Итак, вы создали программу, и вы не знаете, как она работает? –