Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Тут можно читать онлайн Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература, издательство Вильямс, год 0101. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - описание и краткое содержание, автор Стивен Прата, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать книгу онлайн бесплатно, автор Стивен Прата
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Ответы на вопросы для самоконтроля из главы 6

1. 2, 7, 70, 64, 8, 2

2. Он должен вывести следующее:

36 18 9 4 2 1

Если бы переменная value имела тип double, то результат проверки условия оставался бы истинным даже при значениях value, меньших 1. Выполнение цикла продолжалось бы до тех пор, пока потеря значимости при вычислениях с плавающей запятой не привела бы к получению значения 0. Кроме того, в этом случае выбор спецификатора %3d был бы неправильным.

3. а. х > 5

б. scanf ("%lf",&x) ! = 1

в. х == 5

4. a. scanf ("%d", &х) == 1

б. х ! = 5

в. х >= 2 0

5. Строка 4: должна содержать list [10].

Строка 6: запятые необходимо заменить точками с запятой.

Строка 6: диапазоном для i должен быть 0-9, а не 1-10.

802 Приложение А

Строка 9: запятые необходимо заменить точками с запятой.

Строка 9: операцию >= необходимо заменить операцией <=, иначе цикл будет выполняться порядочное время.

Строка 11: между строками 11 и 12 должна присутствовать дополнительная закрывающая фигурная скобка. Одна скобка закрывает блочный оператор и еще одна — программу. Между этими скобками необходимо поместить строку return 0;.

Вот скорректированная версия:

6 Ниже показан один из возможных вариантов include int mainvoid int col - фото 611

6. Ниже показан один из возможных вариантов:

#include int main(void)

{

int col, row;

for (row = 1; row <= 4; row++)

{

for (col = 1; col <= 8; col++) printf("$"); printf ("\n");

}

return 0;

}

7. а. Программа выведет следующую строку:

Hi! Hi! Hi! Bye! Bye! Bye! Bye! Bye!

б. Программа выведет следующую строку:

ACGM

Поскольку код добавляет значение int к значению char, компилятор может выдать предупреждение о возможности потери значащих цифр.

8. Эти программы выведут следующие данные:

а. Go west, youn

б. Нр ! xf tu-! zpvo

в. Go west, young r. $0 west, youn

Ответы на вопросы для самоконтроля 803

9. Должен быть получен следующий вывод:

10 a mint б 10 элементов в Значения типа double г Правильной является - фото 612

10. a. mint.

б. 10 элементов.

в. Значения типа double.

г. Правильной является строка scanf ("%lf", &mint [2] ); mint [2] — это значение типа double, a &mint [2] — его местоположение.

11. Поскольку первый элемент имеет индекс 0, переменная цикла должна изменяться в диапазоне от 0 до SIZE - 1, а не от 1 до SIZE. Однако внесение этого изменения приводит к присваиванию первому элементу значения 0, а не 2. Таким образом, цикл необходимо переписать в следующем виде:

for (index = 0; index < SIZE; index++) by_twos[index] = 2 * (index + 1);

Аналогично должны быть изменены пределы во втором цикле. Кроме того, имя массива должно сопровождаться индексом массива:

for( index = 0; index < SIZE; index++) printf("%d ", by_twos[index]);

Один из опасных аспектов неправильного указания пределов в цикле связан с тем, что программа может работать, но поскольку она помещает данные не в те ячейки памяти, куда должна, она может перестать работать в какой-то момент в будущем, формируя своего рода “мину замедленного действия”.

12. Определение должно объявить возвращаемый тип как long и содержать оператор return, который возвращает значение long.

13. Приведение типа num к long гарантирует выполнение вычислений с типом long, а не int. В системе с 16-битным int умножение двух значений типа int порождает результат, который перед возвратом значения усекается до типа int, что может приводить к потере данных.

long square(int num)

{

return ((long) num) * num;

}

804 Приложение А

14. Вывод программы имеет следующий вид:

1: Hi ! к = 1

к is 1 in the loop Now к is 3

к = 3

к is 3 in the loop Now к is 5 к = 5

к is 5 in the loop Now к is 7 к = 7

Ответы на вопросы для самоконтроля из главы 7

1. Истинным является выражение б).

2. a. number >= 90 && number < 100

б. ch != 'q' &&ch ! = 'k'

в. (number >= 1 && number <= 9) && number != 5

г. Один из возможных вариантов является ! (number >= 1 && number <= 9), но выражение number < 1 || number > 9 проще для понимания.

3. Строка 5: эта строка должна иметь вид scanf ("%d %d", &weight, Sheight) He забудьте использовать символы & в scanf(). Кроме того, этой строке должен предшествовать оператор, приглашающий ввести данные.

Строка 9: в дан ном случае подразумевается выражение (height < 72 && height > 64). Однако первая часть выражения излишня, поскольку, чтобы программа достигла строки else if, значение height должно быть меньше 72. Поэтому вполне достаточно использовать выражение (height > 64). Но строка 6 уже гарантирует выполнение этого условия, поэтому никакая дополнительная проверка вообще не требуется и выражение if else следует заменить выражением else.

Строка 11: это условие избыточно. Второе подвыражение (weight не меньше или равно 300) означает то же, что и первое. В данном случае требуется использовать простое выражение (weight > 300). Однако в этой строке присутствует значительно более серьезная ошибка. Строка 11 связана не с тем оператором if! Очевидно, что эта конструкция else предназначалась для оператора if из строки 6. Однако в соответствии с правилом связывания с ближайшим предшествующим оператором if она будет связана с оператором if строки 9. Поэтому строка 11 выполняется тогда, когда значение weight меньше 100, а значение height меньше или равно 64. В результате по достижении этого оператора значение weight никак не может превышать 300.

Строки 7-9: эти строки должны быть заключены в фигурные скобки. Тогда строка 11 станет альтернативой строке 6, а не строке 9. Или же если заменить выражение if else в строке 9 выражением else, то никакие фигурные скобки не понадобятся.

Строка 13: ее необходимо упростить до if (height > 48). В действительности эту строку можно вообще удалить, т.к. строка 12 уже делает нужную проверку.

Ответы на вопросы для самоконтроля 805

Строка 15: эта конструкция else связана с последним оператором if, указанным в строке 13. Чтобы связать это выражение с оператором if в строке 11, строки 13 и 14 потребуется поместить в фигурные скобки. Или, как было предложено ранее, можно просто избавиться от строки 13.

Вот скорректированная версия:

#include int main(void)

{

int weight.height; /* вес в фунтах, рост в дюймах */

printf("Введите свой вес в фунтах "); printf ("и свой рост в дюймах.\n" ); scanf("%d %d", &weight, sheight); if (weight < 100 && height > 64) if (height >= 72)

printf("Ваш вес слишком мал для вашего роста.\n" ); else

printf("Ваш вес мал для вашего роста.\n" ); else if (weight > 300 && height < 48)

printf ("Ваш рост мал для вашего веса.\n");

else

printf("У вас идеальный вес.\n"); return 0;

}

4. а. 1. Утверждение истинно, и численно это равно 1.

б. 0. 3 не меньше 2.

в. 1. Если первое выражение ложно, то второе истинно, и наоборот. Чтобы все выражение было истинным, достаточно истинности только одного из его подвыражений.

г. 6, поскольку значением 6 > 2 является 1.

д. 10, т.к. проверяемое условие истинно.

е. 0. Если выражение х > у истинно, то значением выражения будет у > х, которое в этом случае ложно, или равно 0. Если выражение х > у ложно, значением выражения будет х > у, которое в данном случае ложно.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Прата читать все книги автора по порядку

Стивен Прата - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C. Лекции и упражнения (6-е изд.) 2015 отзывы


Отзывы читателей о книге Язык программирования C. Лекции и упражнения (6-е изд.) 2015, автор: Стивен Прата. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x