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

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

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

}

7. Да, ошибки присутствуют. Аргумент num должен быть объявлен в списке аргументов функции salami(), а не после фигурной скобки. Кроме того, вместо num++ должно быть count++.

8. Ниже показано одно возможное решение:

int largest(int а, intb, int с)

{

int max = а; if (b > max) max = b; if (с > max) max = c; return max;

}

9. Минимальная по объему кода программа приведена ниже. Функции showmenu() и getchoice() являются возможными решениями для пунктов а) и б).

#include

void showmenu(void); /* объявление используемых функций */

int getchoice(int, int); int main()

{

int res;

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

showmenu();

while ((res = getchoice(1,4) ) != 4)

{

printf("Меня устраивает вариант %d.\n", res); showmenu();

}

printf("Программа завершена.\n"); return 0;

} void showmenu(void)

{

printf("Выберите один из следующих вариантов:\n"); printf("1) копировать файлы 2) переместить файлы\n"); printf("3) удалить файлы 4) выйти из программы\n");

printf("Введите номер выбранного варианта:\n");

)

int getchoice(int low, int high)

{

int ans; int good;

good = scanf("%d", sans);

while (good == 1 && (ans < low || ans > high))

{

printf("%d является недопустимым вариантом; повторите попытку\n", ans);

showmenu();

scanf("%d", sans);

}

if (good != 1)

{

printf("Нечисловой ввод."); ans = 4;

}

return ans;

}

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

1. Вывод выглядит следующим образом:

8 8 4 4

0 0 2 2

2. Массив ref содержит четыре элемента, поскольку таково количество значений в списке инициализации.

3. Имя массива ref указывает на первый элемент массива — целое число 8. Выражение ref + 1 указывает на второй элемент — целое число 4. Конструкция ++ref не является допустимым выражением С; ref представляет собой константу, а не переменную.

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

4. ptr указывает на первый элемент, a ptr + 2 — на третий элемент, который будет первым элементом второй строки.

а. 12 и 16.

б. 12 и 14 (согласно скобкам, в первую строку попадает только число 12).

5. ptr указывает на первую строку, a ptr + 1 — на вторую строку; *ptr указывает на первый элемент в первой строке, a*(ptr+ 1) — на первый элемент второй строки.

а. 12 и 16.

б. 12 и 14 (согласно скобкам, в первую строку попадает только число 12).

6. a. &grid [22] [56]

б. &grid[22] [0] или grid[22]

(Второй вариант представляет собой имя одномерного массива, состоящего из 100 элементов, т.е. адрес его первого элемента, которым является

grid [22] [0].)

в. &grid[0] [0] или grid[0] или (int *) grid.

(Здесь grid [0] — это адрес элемента grid[0] [0] типа int, a grid — адрес 100-элементного массива grid [0]. Упомянутые два адреса имеют одно и то же значение, но разные типы; приведение делает типы одинаковыми.)

7. а. int digits(10];

б. float rates [6];

в. int mat [3] [5];

г. char * psa [20];

Обратите внимание, что приоритет[] выше приоритета *, поэтому при отсутствии скобок сначала применяется описатель массива, а затем описатель указателя. Таким образом, это объявление эквивалентно объявлению char * (psa [20]);.

д. char (*pstr) [20];

На заметку!

В пункте д) нельзя использовать объявление char *pstr [20];. Это сделало бы pstr массивом указателей, а не указателем на массив. В частности, pstr указывал бы на одиночное значение char — первый элемент массива, a pstr + 1 указывал бы на следующий байт. При корректном объявлении pstr представляет собой переменную, а не имя массива, и pstr + 1 указывает на позицию, которая на 20 байт отстоит от начального байта.

8. а. int sextet [6] = {1, 2, 4, 8, 16, 32};

б. sextet [2]

в. int lots[100] = { [99] = -1};

г. int pots [100] = { [5] = 101, [10] = 101, 101, 101, 101};

9. От 0 до 9.

10. a. rootbeer [2] = value;

Допустим.

б. scanf("%f", &rootbeer );

Недопустим; &rootbeer не является значением типа float.

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

в. rootbeer = value;

Недопустим; rootbeer не является значением типа float, г printf("%f", rootbeer);

Недопустим; rootbeer не является значением типа float.

д. things[4][4] = rootbeer[3];

Допустим.

е. things[5] = rootbeer;

Недопустим; нельзя присваивать массивы.

ж.pf = value;

Недопустим; value не является адресом,

з. pf = rootbeer;

Допустим.

11. int screen[800] [600];

12. a. void process (double ar[], int n);

void processvla(int n, double ar[n]); process(trots, 20); processvia(20, trots);

б. void process2 (short ar2 [30] , int n);

void process2vla (int n, int m, short ar2[n] [m] ); process2(clops, 10); process2vla(10, 30, clops);

в. void process3 (long ar3 [10] [15] , int n);

void process3vla (int n, int m, int k, long ar3 [n] [m] [k] );

process3(shots, 5);

process3vla (5, 10, 15, shots);

13. a. show ( (int [4]) (8,3,9,2], 4);

б. show2 ( (int[][3]) ((8,3,9), (5,4,1)), 2);

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

1. Если вы хотите, чтобы результат был строкой, то инициализация должна включаcть '\0' Разумеется, альтернативный синтаксис добавляет нулевой символ автоматически:

char name[] = " Fess";

2. Увидимся завтра в кафе. видимся завтра в кафе.

Увидимс

идимс

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

3. о но сно усно кусно Вкусно

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x