Главная / Программирование /
Программирование на языке Pascal / Тест 10
Программирование на языке Pascal - тест 10
Упражнение 1:
Номер 1
Какое значение будет храниться в переменной а:shortint
после выполнения следующего программного отрывка?{b: char; p: ^shortint}
b:= ‘Б’;
p:= addr(b);
a:= p^;
Ответ:
 (1) 'Б' 
 (2) 'б' 
 (3) 129 
 (4) -127 
Номер 2
Какое значение будет храниться в переменной а:integer
после выполнения следующего программного отрывка?{b: string; p: ^integer}
b:= ‘БББ’;
p:= addr(b[1]);
a:= p^;
Ответ:
 (1) ‘ББ’ 
 (2) ‘бб’ 
 (3) –32383 
 (4) 33153 
Номер 3
Какое значение будет храниться в переменной а:integer
после выполнения следующего программного отрывка?{b: string; p: ^word}
b:= ‘ААББВВГГДД’;
p:= addr(b[7]);
a:= p^;
Ответ:
 (1) ‘ГГ’ 
 (2) ‘гг’ 
 (3) –31869 
 (4) 33667 
Упражнение 2:
Номер 1
Для работы с типизированными указателями предназначены процедуры
Ответ:
 (1) addr() 
 (2) dispose() 
 (3) freemem() 
 (4) getmem() 
 (5) new() 
Номер 2
Для выделения памяти в процессе работы программы предназначены процедуры
Ответ:
 (1) addr() 
 (2) dispose() 
 (3) freemem() 
 (4) getmem() 
 (5) new() 
Номер 3
Для освобождения памяти в процессе работы программы предназначены процедуры
Ответ:
 (1) addr() 
 (2) dispose() 
 (3) freemem() 
 (4) getmem() 
 (5) new() 
Упражнение 3:
Номер 1
Двусвязный линейный список задан указателем на голову head и указателем на хвост tail. Какой оператор необходимо вставить вместо [???], чтобы приведенный ниже отрывок программы правильно удалял из этого списка все элементы со значением 0?{type ssylka = ^spisok;
spisok = record znach: integer;
next,prev: ssylka
end;
var head,p,q: ssylka;
}
while (head<>nil)and(head^.znach =0)do
begin p:= head;
head:= head^.next;
dispose(p);
end;
if head<>nil
then begin head^.prev:= nil;
p:= head;
while p^.next <> nil do
if p^.next^.znach = 0
then begin q:= p^.next;
p^.next:= q^.next;
if p <> tail then [???];
dispose(q);
end
else p:= p^.next;
end
else tail:= nil;
Ответ:
 (1) p^.next:= p 
 (2) p^.next^.prev:= p 
 (3) p^.prev:= p 
 (4) p^.prev ^.next:= p 
Номер 2
Какой оператор нужно вставить вместо [???], чтобы приведенный ниже отрывок программы правильно менял местами третий и четвертый элементы двусвязного линейного списка, заданного указателем на голову head?{type ssylka = ^spisok;
spisok = record znach: array[1..1000]of integer;
next,prev: ssylka
end;
var head,p: ssylka;
}
p:= head^.next^.next;
p^.prev^.next:= p^.next;
p^.next:= p^.next^.next;
p^.prev^.next^.next:= p;
p^.next^.prev^.prev:= p^.prev;
[???];
p^.prev:= p^.prev^.next;
Ответ:
 (1) p^.next:= p 
 (2) p^.next^.prev:= p 
 (3) p^.prev:= p 
 (4) p^.prev ^.next:= p 
Номер 3
Какой оператор нужно вставить вместо [???], чтобы приведенный ниже отрывок программы правильно создавал двусвязный линейный список, получая значения из непустого текстового файла f
?{type ssylka = ^spisok;
spisok = record znach: integer;
next,prev: ssylka
end;
var head,p: ssylka;
}
new(head);
read(f,head^.znach);
head^.prev:= nil;
p:= head;
while not eof(f) do
begin
new(p^.next);
read(f,p^.next^.znach);
[???];
end;
p^.next:= nil;
p:= tail;
Ответ:
 (1) p^.next:= p 
 (2) p^.next^.prev:= p 
 (3) p^.prev:= p 
 (4) p^.prev ^.next:= p