четверг, 2 января 2014 г.

Массивы

$ vim array.c

#include <stdio.h>

/* подсчет цифр, символов-разделителей и прочих символов */
int main(void)
{
        int c, i, nwhite, nother;
        int ndigit[10];

        nwhite = nother = 0;
        for (i = 0; i < 10; ++i)
                ndigit[i] = 0;

        while ((c = getchar()) != EOF)
                if (c >= '0' && c <= '9')
                        ++ndigit[c - '0'];
                else if (c == ' ' || c == '\n' || c == '\t')
                        ++nwhite;
                else
                        ++nother;

        printf("Цифры =");
        for (i = 0; i < 10; ++i)
                printf(" %d", ndigit[i]);
        printf(", символы разделители = %d, прочие = %d\n", nwhite, nother);

        return 0;
}

$ cc -g -O0 -Wall -o a.out array.c
$ ./a.out
test 1234567890 123 12 1 1      1
Цифры = 1 6 3 2 1 1 1 1 1 1, символы разделители = 7, прочие = 4



Объявление

int ndigit[10];

объявляет ndigit массивом из 10 значений типа int. Элементы массива всегда нумеруются начиная с нуля, так что элементами этого массива будут ndigit[0], ndigit[1],…, ndigit[9], что учитывается в for-циклах (при инициализации и печати массива).


Проверка
if (с >= '0' && с <= '9' )
определяет, является ли находящийся в c символ цифрой. Если это так, то
c - '0'
есть числовое значение цифры.


Конструкция вида

if (условие1)
    инструкция1
else if (условие2)
    инструкция2
...

    ...
else
    инструкцияN

часто применяется для выбора одного из нескольких альтернативных путей, имеющихся в программе. Условия вычисляются по порядку в направлении сверху вниз до тех пор, пока одно из них не будет удовлетворено; в этом случае будет выполнена соответствующая ему инструкция, и работа всей конструкции завершится. Любая из инструкций может быть группой инструкций в фигурных скобках. Если ни одно из условий не удовлетворено, выполняется последняя инструкция, расположенная сразу за else, если таковая имеется. Если же else и следующей за ней инструкции нет, то никакие действия вообще не производятся. Между первым if и завершающим else может быть сколько угодно комбинаций вида
else if (условие)
    инструкция

Комментариев нет:

Отправить комментарий