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

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

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

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

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

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

Интервал:

Закладка:

Сделать

#include /* объявление функции double sin(double) */

double (* pdf) (double);

double x;

pdf = sin;

x= (*pdf)(1.2); // вызывает sin(1.2)

x = pdf(1.2); // также вызывает sin(1.2)

Вопросы для самоконтроля

Ответы на вопросы для самоконтроля приведены в приложении А.

1. Что неправильно в следующем шаблоне?

structure {

char itable; int num[20]; char * togs

}

2. Ниже приведен фрагмент программы. Что он выведет?

#include

struct house { float sqft;

Структуры и другие формы данных 621

int rooms; int stories; char address[40];

};

int main(void)

{

struct house fruzt = {1560.0, 6, 1, "22 Spiffo Road"}; struct house *sign; sign = &fruzt;

printf("%d %d\n", fruzt.rooms, sign->stories); printf("%s \n", fruzt.address);

printf("%c %c\n", sign->address[3], fruzt.address[4]); return 0;

}

3. Разработайте шаблон структуры, которая будет содержать название месяца, его трехбуквенную аббревиатуру, количество дней в месяце и его номер.

4. Определите массив из 12 структур вида, описанного в вопросе 3, и инициализируйте ее для года, который не является високосным.

5. Напишите функцию, которая после получения номера месяца возвращает общее количество дней с начала года до конца указанного месяца. Предположите, что шаблон структуры, описанный в вопросе 3, и подходящий массив таких структур объявлены внешне.

6. а. Имея показанное ниже определение typedef, объявите 10-элементный массив указанных структур. Затем с помощью присваивания индивидуальных членов сделайте так, чтобы третий элемент этого массива описывал объектив марки Remarkatar с фокусным расстоянием 500 мм и диафрагмой f/2.0.

картинка 464/* дескриптор структуры lens */ /* фокусное расстояние в миллиметрах */ /* диафрагма */ /* марка производителя */

б. Повторите часть а), но воспользуйтесь в объявлении списком инициализации с назначенным инициализатором вместо написания отдельных операторов присваивания для каждого члена.

7. Взгляните на следующий фрагмент кода:

struct name {

char first[20]; char last[20];

};

struct bem {

int limbs; struct name title; char type[30];

};

struct bem * pb; struct bem deb = {

6,

{"Berbnazel", "Gwolkapwolk"(,

"Arcturan"

};

pb = &deb;

622 глава 14

а. Что выведут приведенные ниже операторы?

printf("%d\n", deb.limbs); printf("%s\n", pb->type); printf("%s\n", pb->type + 2);

б. Как можно было бы представить "Gwolkapwolk" в форме записи для структур (двумя способами)?

в. Напишите функцию, которая принимает адрес структуры bem в качестве своего аргумента и выводит содержимое этой структуры в показанной ниже фор ме (предположите, что шаблон структуры находится в заголовочном файле start oik.h):

Berbnazel Gwolkapwolk - это 6-конечный Arcturan.

8. Взгляните на следующие объявления:

struct fullname {

char fname[20]; char lname[20];

};

struct bard {

struct fullname name; int born; int died;

};

struct bard willie; struct bard *pt = Swillie;

а. Идентифицируйте член born структуры willie с помощью идентификатора

willie.

б. Идентифицируйте член born структуры willie с помощью идентификатора

pt.

в. С помощью функции scanf() прочитайте значение для члена born, используя идентификатор willie.

г. С помощью функции scanf() прочитайте значение для члена born, используя и дентифи катор pt.

д. С помощью функции scanf() прочитайте значение для члена lname структуры name, используя идентификатор willie.

е. С помощью функции scanf() прочитайте значение для члена lname структуры name, используя идентификатор pt.

ж. Создайте идентификатор для третьей буквы фамилии того, кто описан переменной willie.

з. Напишите выражение, которое представляет общее количество букв в имени и фамилии того, кто описан переменной willie.

9. Определите шаблон структуры, подходящий для хранения следующих элементов: марка автомобиля, его мощность в лошадиных силах, экологический рейтинг, колесная база и год сборки. В качестве дескриптора шаблона используйте car.

10. Предположим, что имеется следующая структура:

struct gas {

картинка 465float distance; float gals;

};

Структуры и другие формы данных 623

а. Напишите функцию, которая принимает аргумент struct gas. Предположите, что передаваемая структура содержит информацию distance и gals. Эта функция должна вычислять корректное значение для члена mpg и возвращать уже заполненную структуру.

б. Напишите функцию, которая принимает в качестве аргумента адрес struct gas. Предположите, что передаваемая структура содержит информацию distance и gals. Эта функция должна вычислять корректное значение для члена mpg и присваивать его.

11. Объявите перечисление с дескриптором choices, которое устанавливает перечислимые константы no, yes и maybe в 0, 1 и 2 соответственно.

12. Объявите указатель на функцию, которая возвращает указатель на char и принимает в качестве аргументов указатель на char и значение char.

13. Объявите четыре функции и инициализируйте массив указателей на них. Каждая функция должна принимать два аргумента double и возвращать значение double. Кроме того, продемонстрируйте два способа использования массива для вызова второй функции с аргументами 10.0 и 2.5.

Упражнения по программированию

1. Переделайте задание из вопроса 5 таким образом, чтобы аргумент был представлен названием месяца, а не его номером. (Йе забывайте о функции strcmp().) Протестируйте готовую функцию в простой программе.

2. Напишите программу, которая предлагает пользователю ввести день, месяц и год. Месяц может быть представлен порядковым номером, названием или аббревиатурой. Затем программа должна возвратить общее количество дней, истекших с начала года по указанный день включительно. (Учитывайте високосные годы.)

3. Измените программу из листинга 14.2, чтобы она сначала выводила описания книг в том порядке, в каком они вводились, затем в алфавитном порядке по названиям и, наконец, в порядке возрастания цены.

4. Напишите программу, которая создает шаблон структуры с двумя членами в соответствии со следующими критериями.

а. Первым членом является номер карточки социального страхования. Второй член — это структура, состоящая из трех членов. Ее первый член содержит имя, второй член — отчество и третий член — фамилию. Создайте и инициализируйте массив из пяти таких структур. Программа должна выводить данные в следующем формате:

Dribble, Flossie М. — 302039823

Выводиться должна только начальная буква отчества, за которой следует точка. Разумеется, если этот член пуст, не должен выводиться ни инициал, ни точка. Напишите функцию, которая выполняет такой вывод, передайте рассматриваемую структуру этой функции.

б. Модифицируйте часть а) так, чтобы вместо адреса передавалась сама структура.

5. Напишите программу, которая соответствует следующим требованиям.

глава 14

картинка 466а. Программа внешне определяет шаблон структуры name с двумя членами: строкой для хранения имени и строкой для хранения фамилии.

б. Программа внешне определяет шаблон структуры student с тремя членами: структурой name, массивом grade для хранения трех оценок в виде чисел с плавающей запятой и переменной для хранения среднего значения этих трех оценок.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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