Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
2. Предположим, что все переменные имеют тип int. Найдите значение для каждой из следующих переменных:
а. х = (int) 3.8 + 3.3;
б. х = (2 + 3) * 10.5;
В. х = 3 / 5 * 22.0;
Г. х = 22.0 * 3 / 5;
3. Вычислите каждое из следующих выражений:
а. 30.0 / 4.0 * 5.0;
б. 30.0 / (4.0 * 5.0);
в. 30 / 4 * 5;
г. 3 0 * 5 / 4;
д. 30 / 4 .0 * 5; е. 30 / 4 * 5.0;
4. Есть подозрение, что в приведенной ниже программе присутствуют ошибки. Сможете ли вы их обнаружить?
int main(void)
{
int i = 1, float n;
printf("Будьте внимательны! Далее идет последовательность дробей!\n"); while (i < 30) n = 1/i;
printf (" %f ", n); printf("На этом все!\n"); return;
}
5. Ниже приведен альтернативный вариант программы из листинга 5.9. Выглядит так, будто преследовалась цель упростить код путем замены двух операторов scanf() из листинга 5.9 единственным оператором scanf(). Почему этот вариант программы хуже исходного?
#include
#define S_TO_M 60 int main(void)
{
int sec, min, left;
Операции, выражения и операторы 195
9. Модифицируйте последнюю программу так, чтобы вместо чисел она выводила буквы алфавита от а до g.
10. Если бы следующие фрагменты кода были частью завершенной программы, тогда что они выводили бы?
а. int х = 0;
while (++х < 3)
printf("%4d", х);
б. int х = 100;
while (х++ < 103) printf("%4d\n",x); printf("%4d\n",x);
в. char ch = ' s ';
while (ch < 'w')
{
printf("%c", ch); ch++;
}
printf("%c\n",ch);
11. Что выведет следующая программа?
12. Напишите операторы, которые выполняют перечисленные ниже действия (или, другими словами, имеют следующие побочные эффекты).
а. Увеличивает значение переменной х на 10.
б. Увеличивает значение переменной х на 1.
в. Присваивает переменной с удвоенную сумму а и b.
г. Присваивает переменной с сумму а и удвоенного значения b.
13. Напишите операторы, которые выполняют перечисленные ниже действия.
а. Уменьшает значение переменной х на 1.
б. Присваивает m остаток от деления n на к.
в. Делит q на b минус а и присваивает результат р.
г Присваивает переменной х результат деления суммы а и b на произведение с и d.
196 глава 5
Упражнения по программированию
1. Напишите программу, которая преобразует время в минутах в часы и минуты. Для значения 60 создайте символическую константу посредством t#define или const. Используйте цикл while, чтобы обеспечить пользователю возможность повторного ввода значений и для прекращения цикла, если вводится значение времени, меньшее или равное нулю.
2. Напишите программу, которая запрашивает у пользователя ввод целого числа, а затем выводит все целые числа, начиная с этого числа (и включая его) и заканчивая числом, которое больше введенного значения на 10 (включая его). (То есть, если вводится число 5, то в выводе должны присутствовать числа от 5 до 15.) Обеспечьте разделение выводимых значений друг от друга пробелами, символами табуляции или символами новой строки.
3. Напишите программу, которая запрашивает у пользователя ввод количества дней и затем преобразует это значение в количество недель и дней. Например, 18 дней программа должна преобразовать в 2 недели и 4 дня. Отображайте результаты в следующем формате:
18 дней составляют 2 недели и 4 дня.
Чтобы пользователь мог многократно вводить количество дней, используйте цикл while. Цикл должен завершаться при вводе пользователем неположительного значения, например, 0 или -20.
4. Напишите программу, которая запрашивает у пользователя ввод значения высоты в сантиметрах, после чего отображает высоту в сантиметрах, а также в футах и дюймах. Должны быть разрешены дробные части сантиметров и дюймов. Программа должна позволить пользователю продолжать ввод значений высоты до тех пор, пока не будет введено неположительное значение. Вывод этой программы должен иметь следующий вид:
Введите высоту в сантиметрах: 182
182.0 см = 5 футов, 11.7 дюймов
Введите высоту в сантиметрах (<=0 для выхода из программы): 168.7
168.0 см = 5 футов, 6.4 дюймов
Введите высоту в сантиметрах (<=0 для выхода из программы): 0 Работа завершена.
5. Внесите изменения в программу addemup.c (листинг 5.13), которая вычисляет сумму первых 20 целых чисел. (Если хотите, можете считать addemup. с программой, которая вычисляет сумму, которую вы будете иметь спустя 20 дней, если в первый день вы получаете $1, во второй день — $2, в третий день — $3 и т.д.) Модифицируйте программу так, чтобы можно было интерактивно указать, насколько далеко должно распространяться вычисление. Другими словами, замените число 2 0 переменной, значение которой вводится пользователем.
6. Теперь модифицируйте программу из упражнения 5, чтобы она вычисляла сумму квадратов целых чисел. (Или, если вам так больше нравится, программа должна вычислять сумму, которую вы получите, если в первый день вам заплатят $1, во второй день — $4, в третий день — $9 и т.д.) В языке С отсутствует функция возведения в квадрат, но, как вы знаете, квадрат числа n равен п*п.
Операции, выражения и операторы 197
7. Напишите программу, которая запрашивает ввод числа типа double и выводит значение куба этого числа. Для этого используйте собственную функцию, которая возводит значение в куб и выводит полученный результат. Программа main() должна передавать этой функции вводимое значение.
8. Напишите программу, которая выводит результаты применения операции деления по модулю. Пользователь должен первым ввести целочисленное значение, которое используется в качестве второго операнда и остается неизменным. Затем пользователь должен вводить числа, для которых будет вычисляться результат деления по модулю. Процесс должен прерываться вводом значения, которое равно или меньше 0. Пример выполнения этой программы должен выглядеть следующим образом:
Эта программа вычисляет результаты деления по модулю.
Введите целое число, которое будет служить вторым операндом: 256 Теперь введите первый операнд: 438 438 % 256 равно 182
Введите следующее число для первого операнда (<= 0 для выхода из программы): 1234567 1234567 % 256 равно 135
Введите следующее число для первого операнда (<= 0 для выхода из
программы) : 0
Готово
9. Напишите программу, которая запрашивает у пользователя ввод значения температуры но Фаренгейту. Программа должна считывать значение температуры как число типа double и передавать его в виде аргумента пользовательской функции по имени Temperatures(). Эта функция должна вычислять эквивалентные значения температуры но Цельсию и по Кельвину и отображать на экране все три значения температуры с точностью до двух позиций справа от десятичной точки. Функция должна идентифицировать каждое значение символом соответствующей температурной шкалы. Вот формула перевода температуры по Фаренгейту в температуру по Цельсию:
Читать дальшеИнтервал:
Закладка: