. Давайте напишем прог& 656o1422g #1088;амму подсчета числа появлений каждой цифры, символов пустых промежутков (пробел, табуляции, новая строка) и всех остальных символов. Конечно, такая задача несколько искусственна, но она позволит нам проиллюстрировать в одной прог& 656o1422g #1088;амме сразу несколько аспектов языка «C».
Мы разбили вводимые символы на двенадцать категорий, и нам удобнее использовать массив для хранения числа появлений каждой цифры, а не десять отдельных переменных. Вот один из вариантов прог& 656o1422g #1088;аммы:
main
int ndigit[10];
ndigit является массивом из десяти целых. В языке «C» индексы массива всегда начинаются с нуля (а не с 1, как в ФОРТРАНЕ или PL/1/, так что элементами массива являются:
ndigit ndigit ndigit
for
Индекс может быть любым целым выражением, которое, конечно, может включать целые переменные, такие как I , и целые константы.
Эта конкретная прог& 656o1422g #1088;амма сильно опирается на свойства символьного представления цифр. Так, например, в прог& 656o1422g #1088;амме проверка:
if c >= '0' && c <= '9')...
c
c
char int int, Tак что в арифметических выражениях переменные типа CHAR по существу идентичны переменным типа int
c
c ndigit
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if(c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
if (
else if (условие)
оператор-2;
else
оператор-3;
часто встречаются в прог& 656o1422g #1088;аммах как средство выражения ситуаций, в которых осуществляется выбор одного из нескольких возможных решений.
Прог& 656o1422g #1088;амма просто движется сверху вниз до тех пор, пока не удовлетворится какое-нибудь условие; тогда выполняется соответствующий «оператор»
else else и соответствующий «оператор» опущены (как в прог& 656o1422g #1088;амме подсчета слов), то никаких действий не производится. Между начальным if else
else if
оператор .
switch (переключатель), который рассматривается в главе 4, представляет другую возможность для записи разветвления на несколько вариантов, этот оператор особенно удобен, когда проверяемое выражение является либо просто некоторым целым, либо символьным выражением, совпадающим с одной из некоторог& 656o1422g #1086; набора констант. Версия этой прог& 656o1422g #1088;аммы, использующая оператор switch
. Напишите прог& 656o1422g #1088;амму, печатающую гистограмму длин слов из файла ввода. Самое легкое - это начертить гистограмму горизонтально; вертикальная ориентация требует больших усилий.
|