Главная / Программирование /
Структуры и алгоритмы компьютерной обработки данных / Тест 27
Структуры и алгоритмы компьютерной обработки данных - тест 27
Упражнение 1:
Номер 1
Чем ограничен размер динамической памяти?
Ответ:
 (1) размером оперативной памяти 
 (2) размером внешних накопителей 
 (3) размером стековой области 
 (4) нет никаких ограничений 
Номер 2
Из какой области выделяются блоки динамической памяти?
Ответ:
 (1) стековой области 
 (2) области программы 
 (3) области свободной памяти 
 (4) области глобальных переменных 
Номер 3
Динамическая память явно не освобождена в программе. Тогда:
Ответ:
 (1) она будет занята и после завершения программы 
 (2) она автоматически освободится после завершения работы программы 
 (3) она освободится только при выходе из среды программирования 
 (4) она освободится только после выключения компьютера 
Упражнение 2:
Номер 1
Укажите некорректное выделение динамической памяти, если выполнено объявление int *pt;
Ответ:
 (1) pt = new int;
 
 (2) pt = new int [15];
 
 (3) pt = new int [];
 
 (4) pt = new int (15);
 
Номер 2
Укажите корректное выделение динамической памяти, если выполнено объявление float *pf;
Ответ:
 (1) *pf = new float;
 
 (2) pf = new float [15];
 
 (3) pf = new float [];
 
 (4) pf = new sizeof(float);
 
Номер 3
Укажите ошибку при использовании операции выделения динамической памяти, если выполнено объявление char *ph;
Ответ:
 (1) ph = new char [20];
 
 (2) ph = *(new char);
 
 (3) ph = new char ('&');
 
 (4) ph = new char;
 
Упражнение 3:
Номер 1
Какая область динамической памяти, выделенной под одномерный массив mass
, будет освобождена следующим действием: delete mass;
?
Ответ:
 (1) вся используемая динамическая память 
 (2) область, занятая всеми элементами массива mass
 
 (3) область, занятая только первым элементом массива mass
 
 (4) к массиву данная операция не применима 
Номер 2
Укажите верное освобождение динамической памяти, занятой всеми элементами массива mass
.
Ответ:
 (1) delete [] mass;
 
 (2) delete mass;
 
 (3) free (mass);
 
 (4) free (*mass);
 
Номер 3
Какая область динамической памяти, выделенной под одномерный массив mass
, будет освобождена следующим действием: free (mass);
?
Ответ:
 (1) вся используемая динамическая память 
 (2) область, занятая всеми элементами массива mass
 
 (3) область, занятая только первым элементом массива mass
 
 (4) к массиву данная операция не применима 
Упражнение 4:
Номер 1
Какие действия выполняет приведенный фрагмент кода?
int *mas, n=10, i;
mas = new int [n];
mas[0]= a[1]=1;
for (i=2; i<n; i++)
mas[i]= mas[i-1]+ mas[i-2];
Ответ:
 (1) динамическая память под массив не выделена, фрагмент ошибочный 
 (2) обращение к элементам массива неверно, фрагмент ошибочный 
 (3) выделяет динамическую память для 10 целочисленных элементов и заполняет его случайными числами 
 (4) выделяет динамическую память для 10 целочисленных элементов массива и заполняет его числами Фибоначчи 
Номер 2
Какие действия выполняет приведенный фрагмент кода?
int n=20, i;
float *mas;
mas = (float *) calloc(n,sizeof(float));
for (i=0; i<n; i++)
mas[i]= exp(i);
Ответ:
 (1) выделяет динамическую память для 20 вещественных элементов и заполняет его случайными числами 
 (2) выделяет динамическую память для 20 вещественных элементов массива и заполняет его значениями экспоненциальной функции 
 (3) не выполнено явное преобразование типа указателя при выделении динамической памяти, фрагмент ошибочный 
 (4) во фрагменте ошибка вследствие неверного обращения к элементам массива 
Номер 3
Какие действия выполняет приведенный фрагмент кода?
int n=15, i;
double *mas;
mas = (double *)malloc(sizeof(double));
for (i=0; i<n; i++)
cin << mas[i];
Ответ:
 (1) выделяет динамическую память для 15 вещественных элементов и считывает в него элементы с клавиатуры 
 (2) не выполнено явное преобразование типа указателя при выделении динамической памяти, фрагмент ошибочный 
 (3) во фрагменте ошибка вследствие неверного обращения к элементам массива 
 (4) динамическая память выделена только для одного вещественного числа, фрагмент ошибочный 
Упражнение 5:
Номер 1
Укажите порядок освобождения динамической памяти, выделенной ранее под двумерный массив
free (matr[i]);
free (matr);
for (int i=0; i<n; i++)
Ответ:
 (1) 231 
 (2) 321 
 (3) 213 
 (4) 312 
Номер 2
Укажите порядок выделения динамической памяти под двумерный массив
matr[i] = new int [m];
int n=5, m=6,**matr;
for (int i=0; i<n; i++)
matr = new int * [n];
Ответ:
 (1) 2134 
 (2) 2431 
 (3) 2314 
 (4) 2341 
Номер 3
Укажите порядок освобождения динамической памяти, выделенной ранее под двумерный массив
delete matr [i];
for (int i=0; i<n; i++)
delete [] matr;
Ответ:
 (1) 123 
 (2) 321 
 (3) 213 
 (4) 231 
Упражнение 6:
Номер 1
Укажите верный вызов функции, если объявлен ее прототип void gen(int nn, int a, int b, int ***mas)
и переменная int **mass
Ответ:
 (1) gen(n,0,10,**mass);
 
 (2) gen(n,0,10,*mass);
 
 (3) gen(n,0,10,&mass);
 
 (4) gen(n,0,10,mass);
 
Номер 2
Укажите верный вызов функции, если объявлен ее прототип void out(int nn, int **mas)
и переменная int **mass
Ответ:
 (1) out(n,**mass);
 
 (2) out(n,*mass);
 
 (3) out(n,mass);
 
 (4) out(n,&mass);
 
Номер 3
Укажите верное описание прототипа функции, если ее вызов осуществляется как gen(n,0,10,&mass)
; и объявлена переменная int **mass
Ответ:
 (1) void gen(int nn, int a, int b, int &mas)
 
 (2) void gen(int nn, int a, int b, int *mas)
 
 (3) void gen(int nn, int a, int b, int **mas)
 
 (4) void gen(int nn, int a, int b, int ***mas)
 
Упражнение 7:
Номер 1
Охарактеризуйте результат разыменования нулевого указателя
Ответ:
 (1) будет возвращено значение '0'
 
 (2) будет возвращено заранее непредсказуемое значение 
 (3) программа аварийно завершится с ошибкой сегментации 
 (4) указатель не может иметь нулевое значение 
Номер 2
Охарактеризуйте значение указателя в результате выделения памяти для массива из нулевого или отрицательного числа элементов
Ответ:
 (1) будет возвращено значение NULL
 
 (2) будет возвращено заранее непредсказуемое значение 
 (3) программа аварийно завершится с ошибкой сегментации 
 (4) будет возвращено значение адреса выделенной области памяти 
Номер 3
Охарактеризуйте результат, возвращаемый операцией или функцией выделения памяти, если затребованный размер памяти слишком большой
Ответ:
 (1) будет возвращено заранее непредсказуемое значение 
 (2) будет возвращено значение NULL
 
 (3) будет возвращено значение адреса части выделенной памяти 
 (4) программа аварийно завершится с ошибкой сегментации 
Упражнение 8:
Номер 1
Охарактеризуйте ошибку при использовании указателя во фрагменте кода:
int *n;
*n=34;
Ответ:
 (1) указатель неверно объявлен 
 (2) указатель нельзя использовать без предварительного выделения памяти 
 (3) значение присваивается неинициализированному указателю 
 (4) не освобождена память под указатель 
Номер 2
Охарактеризуйте ошибку при использовании действий с указателями во фрагменте кода:
int *p,i=55;
p=&i;
delete p;
Ответ:
 (1) попытка освободить нединамическую память 
 (2) указатель неверно объявлен 
 (3) значение присваивается неинициализированному указателю  
 (4) несоответствие типов в присваивании 
Номер 3
Охарактеризуйте ошибку при использовании действий с указателями во фрагменте кода:
int *p;
for (i=0;i<32000;i++)
p= new int;
Ответ:
 (1) память выделяется под необъявленный указатель 
 (2) указатель неверно объявлен 
 (3) к операции new
необходимо применить явное преобразование типов 
 (4) происходит "утечка" памяти