Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сборник тестовых вопросов и задач по языку программирования Си. В 2 частях. Ч. 1. Практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
101
20. Пусть iptr является указателем на целое число, а cptr — указатель
на символ. Выберите правильное высказывание:
sizeof (iptr) такой же, как и sizeof (cptr);
sizeof (iptr) больше, чем sizeof (cptr);
sizeof (iptr) меньше, чем sizeof (cptr);
ничего из перечисленного.
21. Что выведет следующая программа на Си?
#include<stdio.h>
int main()
{
struct seq
{
int u,v,x,y,z;
};
struct seq num = {111, 222, 333, 444, 555};
struct seq *ptr = #
printf("\n\t%d", *((int*)ptr + 2 + (5-3)));
return 0;
}
333;
444;
555.
22. Что выведет следующая программа на Си?
#include<stdio.h>
int main()
{
int x = 100, y = 15;
int *ptr;
ptr = &y;
printf(" \n\t%d ", x**ptr);
return 0;
}
102
23. Что выведет следующая программа на Си?
#include<stdio.h>
int main(){
char arr[5] = "Урок", *ptr, i, *ptr1;
ptr = &arr[1];
ptr1 = ptr+3;
*ptr1 = '+';
for(i = 0; i < 4;i++)
printf("%c", *ptr++);
return 0;
}
24. Установите соответствие между объявлением переменных и их
описанием.
int *i;
Массив
int **i;
Указатель на указатель
short int *i;
Указатель целого типа
int arr[7];
Указатель короткого целого типа
25. Установите соответствие между оператором и его описанием.
*
Значение по адресу,
находящемуся в переменной а
&a
Адрес переменной а
*(&a)
Оператор указателя
26. Установите соответствие между результатом сравнения указателей
на переменные a, b и описанием результата сравнения.
ptr_a<ptr_b
Истина, если ptr_a и ptr_b указывают на различные элементы данных, но одного и того же типа
ptr_a>ptr_b
Истина, если a располагается после b или ptr_a и ptr_b указывают на одну и ту же ячейку памяти
ptr_a<=ptr_b
Истина, если a располагается перед b или ptr_a и ptr_b указывают на одну и ту же ячейку памяти
ptr_a>=ptr_b
Истина, если a располагается перед b
103
ptr_a==ptr_b
Истина, если указателю ptr_a присвоено NULL-значение (ноль)
ptr_a!=ptr_b
Истина, если a располагается после b
ptr_a==NULL
Истина, если ptr_a и ptr_b указывают на один и тот же элемент данных
27. Предположим, что arr — массив целых чисел, а i — переменная
типа int, при этом ее значение меньше длины массива. Являются ли тож­дественными следующие последовательности операторов?
c << arr[i] << k;
c << *(arr + i) << k;
да;
нет.
28. Предположим, что объявлены следующие переменные:
double rad = 5.0, pi = 3.14; double *ptr = π
Какие выражения являются правильными?
*ptr = &rad;
c << *ptr;
(*ptr)++;
*ptr = 0;
29. Как называется тип указателя, который не имеет связанного с ним
типа данных? Допишите объявление указателя ptr данного типа:
……… *ptr;
30. Каков размер пустого указателя?
ОТВЕТЫ К ВОПРОСАМ И ЗАДАЧАМ ТЕМЫ 9
1. Выделение памяти по требованию во время выполнения программы
называется:
динамическое распределение памяти.
104
2. Над указателями могут выполняться операции:
вычитания;
сложения.
3. Укажите операторы получения адреса и разыменования:
& и *.
4. Как обеспечивается доступ к переменной без непосредственного
обращения к ней самой?
с использованием указателей.
5. Что будет выведено на экран?
6.
6. На экран будет выведено:
адрес памяти, адрес памяти, b.
7. Какое из указанных ниже инициализирующих выражений недопу-
стимо для указателя int *p?
‘25’.
8. Какое из указанных ниже инициализирующих выражений недопу-
стимо для указателя char *p?
‘a.
9. Что будет выведено на экран?
20,20,20.
10. Укажите верные варианты определения указателя:
именованная константа, значением которой служит адрес участка памяти,
выделенной для объекта конкретного типа.
11. Каким будет тип переменной-указателя на переменную типа float?
float.
105
12. Перед использованием переменной-указателя она должна быть:
объявлена и инициализирована.
Использование переменной-указателя без инициализации может привести к краху системы, так как она будет случайным значением, соответствующим машинному состоянию.
13. В языке Си переменная-указатель на целое число может быть со-
здана с помощью объявления:
int *p;
14. Что выведет следующая программа на Си?
21 45.
15. Что выведет следующая программа на Си?
4.
16. Что выведет следующая программа на Си?
Привет!
Указателю можно присвоить специальное значение NULL, означающее, что он никуда не указывает, т.е. является своеобразным нулем.
17. Что означает следующее объявление и инициализация в Си?
ptr является указателем на целочисленный массив из 5 элементов.
18. В каком из перечисленных заголовочных файлов определен макрос
NULL в Си?
stdio.h.
19. Какое из указанных присваиваний является синтаксически пра-
вильным для объявленных переменных-указателей?
vptr = cptr.
20. Пусть iptr является указателем на целое число, а cptr — указатель
на символ. Выберите правильное высказывание:
sizeof (iptr) такой же, как и sizeof (cptr).
106
21. Что выведет следующая программа на Си?
555.
22. Что выведет следующая программа на Си?
1 500. Арифметическая операция над указателем: 100 *15.
23. Что выведет следующая программа на Си?
рок+. переменной-указателю присваивается второй элемент в массиве
«Урок». Затем к переменной ptr добавляется символ '+' и выводится рок+.
24. Установите соответствие между объявлением переменных и их
описанием.
указатель целого типа (int *i);
указатель на указатель (int **i);
указатель короткого целого типа (short int *i);
массив (int arr[7]).
25. Установите соответствие между оператором и его описанием.
оператор указателя (*);
адрес переменной а (&a);
значение по адресу, находящемуся в переменной а *(&a).
26. Установите соответствие между результатом сравнения указателей
на переменные a, b и описанием результата сравнения.
ptr_a<ptr_b
Истина, если a располагается перед b
ptr_a>ptr_b
Истина, если a располагается после b
ptr_a<=ptr_b
Истина, если a располагается перед b или ptr_a и ptr_b указывают на одну и ту же ячейку памяти
ptr_a>=ptr_b
Истина, если a располагается после b или ptr_a и ptr_b указывают на одну и ту же ячейку памяти
ptr_a==ptr_b
Истина, если ptr_a и ptr_b указывают на один и тот же элемент данных
ptr_a!=ptr_b
Истина, если ptr_a и ptr_b указывают на различные элементы данных, но одного и того же типа
ptr_a==NULL
Истина, если указателю ptr_a присвоено NULL-значение (ноль)
107
27. Предположим, что arr — массив целых чисел, а i — переменная
типа int, при этом ее значение меньше длины массива. Являются ли тожде­ственными следующие последовательности операторов?
да.
28. Какие выражения являются правильными?
c << *ptr;
(*ptr)++;
*ptr = 0;
29. Как называется тип указателя, который не имеет связанного с ним
типа данных? Допишите объявление указателя ptr данного типа:
void.
30. Каков размер пустого указателя?
8.
108
ТЕМА 10. УКАЗАТЕЛИ И МНОГОМЕРНЫЕ МАССИВЫ
1. Что выполняет функция malloc?
дает возможность получить блок из резерва свободной памяти, ее пара-
метр — целое число, которое задает количество запрашиваемых байтов, резуль­тат — указатель на ту ячейку памяти, с которой начинается блок выделенной памяти;
освобождает тот фрагмент памяти, на который указывает ptr, исключая
его из последующего использования (ptr является параметром функции);
дает возможность получить блок из резерва свободной памяти и запол-
няет его нулями;
выделяет дополнительное количество байтов без потери уже записанных
данных.
2. Что выполняет функция free?
дает возможность получить блок из резерва свободной памяти, ее пара-
метр — целое число, которое задает количество запрашиваемых байтов, резуль­тат — указатель на ту ячейку памяти, с которой начинается блок выделенной памяти;
освобождает тот фрагмент памяти, на который указывает ptr, исключая
его из последующего использования (ptr является параметром функции);
дает возможность получить блок из резерва свободной памяти и запол-
няет его нулями;
выделяет дополнительное количество байтов без потери уже записанных
данных.
3. Что выполняет функция calloc?
дает возможность получить блок из резерва свободной памяти, ее пара-
метр — целое число, которое задает количество запрашиваемых байтов, резуль­тат — указатель на ту ячейку памяти, с которой начинается блок выделенной памяти;
освобождает тот фрагмент памяти, на который указывает ptr, исключая
его из последующего использования (ptr является параметром функции);
дает возможность получить блок из резерва свободной памяти и запол-
няет его нулями;
выделяет дополнительное количество байтов без потери уже записанных
данных.
109
4. Что выполняет функция realloc?
дает возможность получить блок из резерва свободной памяти, ее пара-
метр — целое число, которое задает количество запрашиваемых байтов, резуль­тат — указатель на ту ячейку памяти, с которой начинается блок выделенной памяти;
освобождает тот фрагмент памяти, на который указывает ptr, исключая
его из последующего использования (ptr является параметром функции);
дает возможность получить блок из резерва свободной памяти и запол-
няет его нулями;
выделяет дополнительное количество байтов без потери уже записанных
данных.
5. Какая функция используется для выделения памяти под массив
во время выполнения без инициализации элементов массива?
calloc;
malloc;
realloc.
6. Пусть указатель ptr содержит адрес переменной типа double и пусть
это значение равно 1000. Чему равно выражение ptr++?
1001;
1008;
1010;
1002.
7. Пусть указатель ptr содержит адрес переменной х целого типа, рав-
ной 10. Чему равно выражение ++*ptr_var?
11;
адресу, который больше адреса х на 1;
адресу, который больше адреса х на 2;
12;
9.
8. Как записать адрес (i + 1)-го элемента одномерного массива arr?
&arr[i+1]
arr++i
arr[i]
*arr[i]
110
9. Как получить содержимое i-го элемента массива arr?
arr[i]
*(arr+i)
&arr[i]
*arr[i]
10. Пусть z — двумерный массив. Чему равно выражение **z?
z[0][0]
&z[0][0]
&z[1][0]
*z[0][0]
11. Пусть z — двумерный массив. Как с помощью указателей записать
элемент z[3][4]?
z[3][4]=*(*(z+3)+4)
z[3][4]=&(*(z+3)+4)
z[3][4]=*(z+3)+4
z[3][4]=*((z+3)+4)
12. Чему будут равны значения переменных a, b и c после выполнения
приведенного фрагмента кода?
int a=10, b=20, c=30;
int *ptr;
ptr = &a;
c = *ptr;
ptr = 30;
b = a;
a = 30, b = 10, c = 10;
a = 30, b = 30, c = 10;
a = 10, b = 10, c = 10.
13. Какое выражение выполняет операцию инкремента значения
указателя?
*p=10; p++
*p++
(*p)++
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]