Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Строка 5: только эта строка (пустая) в программе является правильной!
Строка 6: используйте для присваивания символ =, а не :=. (Судя по всему, Джо немного знаком с языком Pascal.) Для количества недель в году укажите 52, а не 56.
Строка 7: эта строка должна выглядеть следующим образом:
printf("В году содержится %d недель.\n", s);
Строка 9: эта строка отсутствует, но должна существовать и состоять из закрывающей фигурной скобки }.
После внесения всех исправлений код должен выглядеть следующим образом:
#include
int main(void) /* выводит количество недель в году */
{
int s;
s = 52;
printf("В году содержится %d недель.\n", s); return 0;
}
5. а. Бе, бе, Черная Овечка.У тебя найдется шерсть для меня?
(Обратите внимание на отсутствие пробела после точки. Пробел можно вставить, указав " У вместо "У.)
б. Прочь!
Вот наглая свинья!
(Обратите внимание на то, что курсор остается в конце второй строки.)
В. Что?
Не/nклюет?
(Обратите внимание, что обычная косая черта (/) не оказывает такое же влияние, как обратная косая черта (\); она просто выводится на экран.)
Г. 2 + 2 = 4
(Обратите внимание на замену каждой последовательности символов %d значением соответствующей переменной из списка. Кроме того, символ + означает операцию сложения, и это вычисление может выполняться внутри оператора printf().
6. int и char (main — имя функции, function (функция) — технический термин, относящийся к языку С, а = представляет собой символ операции.)
7. printf("Текст содержал %d слов и %d строк.\n", words, lines);
8. После выполнения строки 7 значение а равно 5, а b — 2. После выполнения строки 8 значения а и b равны 5. После выполнения строки 9 значения а и b по-прежнему равны 5. (Обратите внимание, что значение а не может быть равным 2, поскольку на момент выполнения оператора а = b; значение переменной b уже изменено на 5.)
9. После выполнения строки 7 значение х равно 10, а значение b — 5. После выполнения строки 8 значение х равно 10, а значение у — 15. После выполнения строки 9 значение х равно 150, а значение у — 15.
794 Приложение А
Ответы на вопросы для самоконтроля из главы 3
1. а. int, возможно short, unsigned или unsigned short; население города пред
ставляет собой целое число.
б. float; маловероятно, чтобы стоимость была целым числом. (Можно было бы использовать тип double, но в данном случае повышенная точность не требуется.)
в. char.
г. int, возможно unsigned.
2. Во-первых, тип long может вмещать большие числа, чем int; во-вторых, если требуется обработка больших значений, то использование типа, для которого во всех системах гарантируется длина, по меньшей мере, 32 бита, улучшает переносимость кода.
3. Чтобы получить в точности 32 бита, можно использовать тип int32_t, если он определен для данной системы. Для более короткого типа, который мог бы хранить, по меньшей мере, 32 бита, необходимо применять int_least32_t. Чтобы получить тип, который обеспечил бы самые быстрые вычисления с 32-битными значениями, следует выбрать int_fast32_t.
4. а. Константа char (но сохраненная как значение типа int).
б. Константа double.
в. Константа unsigned int, представленная в шестнадцатеричном формате.
г. Константа double.
5. Строка 1: должна иметь вид #include .
Строка 2: должна иметь вид int main (void).
Строка 3: необходимо использовать (, а не (.
Строка 4: между g и h должна находиться запятая, а не точка с запятой.
Строка 6 (пустая): в порядке.
Строка 7: перед е должна находиться хотя бы одна цифра. В данном случае вполне подошло бы 1е21 или 1.0е21, хотя они достаточно большие. Строка 8: в порядке, во всяком случае, с точки зрения синтаксиса.
Строка 9: необходимо применять }, а не ).
Отсутствующие строки. Во-первых, переменной rate никогда не присваивается значение. Во-вторых, переменная h никогда не используется. Кроме того, программа совершенно не информирует пользователя о результатах вычислений. Ни одна из этих ошибок не помещает запуску программы (хотя может быть выведено предупреждение о неиспользуемой переменной), но они преуменьшают и без того ограниченную ее пригодность. Кроме того, в конце программы должен быть предусмотрен оператор return.
Ниже представлена одна из возможных корректных версий:
Ответы на вопросы для самоконтроля 795
Приложение А
Вот одна из возможных корректных версий:
#include
int main(void) /* эта программа безупречна */
{
int cows, legs;
printf("Сколько коровьих ног вы насчитали?\n"); scanf("%d", slegs); cows = legs / 4;
printf("Отсюда следует, что есть %f коров(а)", cows); return 0;
}
11. а. Символ новой строки.
б. Символ обратной косой черты.
в. Символ двойной кавычки.
г. Символ табуляции.
Ответы на вопросы для самоконтроля из главы 4
1. Программа функционирует некорректно. Первый оператор scanf() читает только имя, оставляя фамилию незатронутой, но по-прежнему находящейся в буфере ввода. (Этот буфер представляет собой просто временную область, используемую для хранения входных данных.) Когда следующий оператор scanf() переходит к считыванию веса, он продолжает чтение с того места, где была завершена предыдущая попытка, и пытается прочитать фамилию как значение веса. Это ведет к ошибке работы scanf(). С другой стороны, если в ответ на запрос имени ввести что-то вроде Иван 144, то 144 будет применяться в качестве значения веса, несмотря на то, что оно введено до выдачи запроса на ввод веса.
2. а. Он продал эту картину за $234.50
б.hi!
(Примечание: первый символ — это символьная константа, второй — десятичное целое значение, преобразованное в символ, а третий — восьмеричное ASCII-представление символьной константы.)
в. Его Гамлет был хорош, и без намека на вульгарность, содержит 51 символов.
Г. Является ли 1.20е+003 тем же, что и 1201.00?
3. Необходимо использовать символы \", как показано ниже:
printf("\"%s\"\nсодержит %d символов.\n", Q, strlen(Q));
4. Корректная версия выглядит следующим образом:
#include /* не забудьте включить эту строку*/
Ответы на вопросы для самоконтроля 797
char name [40]; /* создайте массив */
printf("Введите свое имя.\n"); /* вставьте символ \n для улучшения
читабельности */
scanf("%s", name);
printf("Хорошо, %C, а сколько вам лет?\n", name); /* %s для строки */ scanf ("%d", sage); /* %d, а не %f, sage, а не age */
xp = age + X;
printf("Неужели, %s! Вам должно быть, по меньшей мере, %d.\n", В, хр); return 0; /* не перезапускать */
}
5. Вспомните о конструкции %%, предназначенной для вывода символа %.
printf("Данный экземпляр книги \"%s\" стоит $%0.2f.\n", BOOK, cost); printf("Это %0.0f%% от цены в прайс-листе.\n", percent);
Интервал:
Закладка: