Листинг 1. Программа расчета и отображения накладной.

/*invoice.c*/#define TAX_RATE 0.06#define SHIPPING 0.10main(){char name[15], address[20], city[15], state[3], zip[6];float order, total, tax, ship;printf("Имя покупателя: ");gets(name);printf("Адрес: ");gets(address);printf("Город: ");gets(city);printf("Штат: ");gets(state);printf("Индекс:");gets(zip);printf("Сумма заказа: ");scanf("%f", &order);tax = order * TAX_RATE;ship = order * SHIPPING;total = order + tax + ship;puts("\n\n\n\n");puts(" НАКЛАДНАЯ\n");printf("%s\n%s\n%s, %s %s\n", name, adress, city, state, zip);printf("\t\t\t\t%-10s\t%10.2f\n", "Заказ:", order);printf("\t\t\t\t%-10s\t%10.2f\n", "Налог:", tax);printf("\t\t\t\t%-10s\t%10.2f\n", "Транспортировка:", ship);printf("\t\t\t\t\t\t______________\n);printf("\t\t\t\t%-10s\t%10.2f","Всего: ",total);}

Деление нацело

Оператор % используется для расчета остатка от деления нацело. Если вы используете оператор деления (/) для целочисленных данных, то результат деления тоже всегда будет целым числом. Например, при делении 12 на 5 (12/5) вы получите 2, а не 2.4. Дробная часть, равная в данном случае 0.4, при делении целых чисел отбрасывается.

Разумеется, нередко возникает необходимость узнать значение остатка от деления. Пока мы имеем дело с целыми числами, мы не можем использовать значение 0.4, так как это число относится к типу float. Мы же определили результат деления как целое. В этом случае получается, что число 12 состоит из двух чисел 5, а лишняя двойка просто игнорируется. Число 2 в данном случае является остатком от деления нацело, для получения которого и используется оператор %. Остаток от деления нацело также всегда является целым числом.

В качестве примера приведен Листинг 2. В этой программе подсчитывается количество банкнот достоинством в двадцать, десять, пять и один доллар, необходимых для уплаты определенной суммы. Наиболее существенным, на что следует обратить внимание в этом примере, является алгоритм, то есть способ использования операции деления нацело при выполнении задачи, решение которой в другом случае потребовало бы произведения более сложных расчетов. Как и все прочие алгоритмы, данный алгоритм выглядит очень простым, стоит только понять его основную идею.