Листинг 2. Составные инструкции.

/*luxury2.c*/main() { float cost, tax, luxury, total; luxury = 0.0; printf("Введите цену товара: "); scanf("%f", &cost); tax = cost * 0.06; if (cost > 40000.00) { luxury=cost*0.005; printf("Сумманалоганапредметыроскошисоставляет %.2f\n", luxury); } total = cost + tax + luxury; printf("Стоимость единицы товара с учетом налогов составляет %.2f", total); }

Конструкция if...else

Сама по себе инструкция if используется в тех случаях, когда важно выполнить некие действия при истинности определенного условия. Возможна ситуация, когда при истинности условия должен быть выполнен один набор инструкций, а в противном случае — другой. Допустим, мы хотим, чтобы в тех случаях, когда цена какого-либо товара ниже той, для которой установлен налог на предметы роскоши, программа генерировала сообщение: «Для данного наименования налог на предметы роскоши не установлен». Это можно сделать с помощью двух инструкций if:

if (cost> 40000.00) { luxury = cost * 0.005; printf("Размер налога на предметы роскоши для \ данного наименования составляет %.2f", luxury); }if (cost< 40000.00) puts("Для данного наименования налог \ на предметы роскоши не установлен");

Но есть более эффективный способ. Можно объединить обе инструкции в одну, пользуясь тем, что есть только два возможных случая в использовании одной и той же переменной: либо цена товара больше 40 тысяч долларов, либо цена товара меньше или равна указанной сумме. Если одно из условий не выполняется, следовательно, выполняется второе условие, так что можно

Листинг 2. Составные инструкции. - student2.ru
Рис. 2. Инструкции, модифицированные с использованием ключевого слова else

скомбинировать их, используя ключевое слово else (которое переводится как «иначе»):

if (condition) instruction;else instruction;

Здесь сказано: «Если условие истинное, то должна быть выполнена команда, являющаяся частью инструкции if, иначе надо выполнить инструкцию, следующую за else». Инструкция, помещенная после ключевого слова else, выполняется только в том случае, если условие оказалось ложным. Если возникает необходимость выполнить в этом случае несколько инструкций, можно использовать составную инструкцию, заключив ее в фигурные скобки точно так же, как для if. Точка с запятой ставится в конце каждой инструкции и не ставится после ключевого слова else.

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

Дополненный Опросник

В работе 3были предложены в качестве примера несколько программ, которые выводили на экран монитора вопросы и ответы. Поскольку вы тогда еще не познакомились c инструкцией if, то не имели возможности вести подсчет очков за правильные ответы. Подсчет очков, как демонстрирует программа из Листинга3, представляет собой, по существу, сравнение правильного ответа, заложенного в тексте программы, и ответа, введенного с клавиатуры.

В этой программе используются функции, которые выводят вопрос на экран монитора, вводят с клавиатуры ответ пользователя, определяют правильность ответа и подсчитывают количество верных и ошибочных ответов. И вопрос, и правильный ответ передаются функции — вопрос в виде строки литералов, ответ в виде целого числа. Программа построена таким образом, чтобы в нее можно было при желании добавлять вопросы, дописывая инструкции вызова функции ask():

ask("9+5= ", 14);

Наши рекомендации