int lc = 0; /* счетчик других символов
while ((ch = getchar()) !='#')
{
if (' a' <= ch >= ' z') lc + +;
elseif (!(ch < 'A') || !(ch > 'Z') uc++; oc++;
}
printf(%d строчных, %d прописных, %d других, lc, uc, oc); return 0;
}
290 глава 7
8. Что выведет следующая программа?
/* retire.с */
#include int main(void)
{
int age = 20; while (age++ <= 65)
{
if ( ( age % 20) = 0) /* делится ли возраст на 20? */ printf("Вам %d. Вас повысили в должности.\n", age); if (аде = 65)
printf("Вам %d. Получите свои золотые часы.\n", age);
}
return 0;
}
9. Что выведет следующая программа при указанном вводе?
q
с
h
b
#include int main(void)
{
char ch;
while ((ch = getchar()) != '#')
{
if (ch == '\n') continue;
printf("Шаг l\n"); if (ch == ' c') continue;
else if (ch = 'b') break;
else if (ch == 'h') goto laststep; printf("Шаг 2\n"); laststep: printf("Шаг 3\n");
}
printf('Готово\n"); return 0;
}
10. Перепишите программу из вопроса 9 так, чтобы она сохранила свое поведение, но в ней не использовались операторы continue и goto.
Упражнения по программированию
1. Напишите программу, которая читает входные данные до тех пор, пока не встретится символ #, а затем отображает количество прочитанных пробелов, количество символов новой строки и количество всех остальных символов.
2. Напишите программу, которая читает входные данные дотех пор, пока не встретит ся символ #. Программа должна выводить каждый введенный символ и его десятичный код ASCII. Каждая строка вывода должна содержать восемь пар “символ-код”.
Управляющие операторы С: ветвление и переходы 291
Подсказка: используйте счетчик символов и операцию деления по модулю ('*,) для вывода символа новой строки на каждой восьмой итерации цикла.
3. Напишите программу, которая читает целые числа до тех пор, пока не встретится число 0. После прекращения ввода программа должна сообщить общее количество введенных четных целых чисел (за исключением 0), среднее значение введенных четных целых чисел, общее количество введенных нечетных целых чисел и среднее значение нечетных чисел.
4. Используя операторы if else, напишите программу, которая читает входные данные, пока не встретит символ #, заменяет каждую точку восклицательным знаком, изначально присутствующие восклицательные знаки — двумя восклицательными знаками и в конце сообщает о количестве произведенных замен.
5. Выполните упражнение 4, но с применением оператора switch.
6. Напишите программу, которая читает входные данные, пока не встретит символ #, и сообщает количество вхождений последовательности ei.
На заметку!
Эта программа должна "запоминать" предыдущий символ, а также текущий символ. Проверьте ее на входной последовательности вроде “Receive your eieio award#”.
7. Напишите программу, которая запрашивает количество часов, отработанных за неделю, и выводит значения общей суммы начислений, налогов и чистой зарплаты. Исходите из перечисленных ниже утверждений.
а. Основная тарифная ставка заработной платы = $10,00/час
б. Сверхурочные часы (превышающие 40 часов в неделю) = коэффициент 1,5
в. Налоговая ставка: 15% с первых $300;
20% со следующих $150;
25% с остатка.
Используйте константы #define и не беспокойтесь, если приведенный пример не соответствует действующему налогообложению.
8. Измените предположение а) в упражнении 7 так, чтобы программа предоставляла меню с тарифными ставками. Для выбора тарифной ставки используйте оператор switch. После запуска программы вывод должен быть подобным показанному ниже:
*********************************************************************
Введите число, соответствующее желаемой тарифной ставке или действию:
1) $8.75/ч 2) $9.33/ч
3) $10.00/ч 4) $11.20/ч
5) Выход
*********************************************************************
Если выбран вариант с 1 по 4, программа должна запрашивать количество отработанных часов. Программа должна повторяться до тех пор, пока не будет выбран вариант 5. При вводе чего-то отличного от вариантов 1-5 программа должна напомнить пользователю допустимые варианты для ввода и снова ожидать ввод. Для различных тарифных и налоговых ставок применяйте константы #define.
9. Напишите программу, которая принимает в качестве ввода положительное целое число и отображает все простые числа, которые меньше или равны введенному числу.
292 глава 7
10. В 1988 году шкала федеральных налоговых ставок Соединенных Штатов была самой простой за все прошедшее время. Она содержала четыре категории, каждая из которых включала две ставки. Ниже приведены самые общие данные (суммы в долларах представляют собой доход, облагаемый налогом).

Читать дальше