Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Оператор switch позволяет делать выбор из последовательности операторов, помеченных целочисленными значениями. Если целочисленное значение условия проверки, следующего за ключевым словом switch, совпадает с какой-то меткой, управление передается оператору, снабженному этой меткой. После этого управление проходит через операторы, следующие за помеченным оператором, до тех пор, пока не встретится оператор break.
288 глава 7
Наконец, операторы break, continue и goto — это операторы переходов, которые приводят к передаче управления в другое место программы. Оператор break вынуждает программу перейти к оператору, следующему за концом цикла или за оператором switch, который содержит break. Оператор continue заставляет программу пропустить операторы, оставшиеся в теле цикла, и начать новую итерацию.
Вопросы для самоконтроля
Ответы на вопросы для самоконтроля приведены в приложении А.
1. Определите, какие выражения равны true, а какие — false.
а. 100 > 3 && 'а' > 'с'
б. 100 > 3 || а ' > ' с '
в. ! (100>3)
2. Напишите выражения для представления следующих условий.
а. Значение number равно или больше 90, но меньше 100.
б. Значение ch не является символом q или к.
в. Значение number находится между 1 и 9 (включая граничные значения), ноне равно 5.
г. Значение number не находится между 1 и 9.
3. В приведенной ниже программе присутствуют излишне сложные выражения отношений, а также откровенные ошибки. Упростите программу и исправьте ошибки.
4. Каковы числовые значения каждого из следующих выражений?
а. 5 > 2
б. 3 + 4 > 2 && 3 < 2
в. х >= у || у > х
г. d = 5 + (6 > 2)
д. 'X' > 'т' ? 10: 5
е. х > у ? у > х: х > у
5. Что выведет следующая программа?
#include int main(void)
{
int num;
for (num = 1; num <= 11; num++)
{
if (num % 3 == 0) putchar('$'); else
putchar ('*'); putchar('#'); putchar('%');
}
putchar('\n'); return 0;
}
6. Что выведет следующая программа?
7. Что неправильно в следующей программе?
#include int main(void)
{
char ch;
int lc = 0; /* счетчик строчных символов
int lc = 0; /* счетчик прописных символов
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 году шкала федеральных налоговых ставок Соединенных Штатов была самой простой за все прошедшее время. Она содержала четыре категории, каждая из которых включала две ставки. Ниже приведены самые общие данные (суммы в долларах представляют собой доход, облагаемый налогом).
Интервал:
Закладка: