Главная / Программирование /
Язык программирования C++ / Тест 16
Язык программирования C++ - тест 16
Упражнение 1:
Номер 1
Какие ключевые слова используются для создания и обработки исключительных ситуаций?
Ответ:
 (1) try
 
 (2) delete
 
 (3) catch
 
 (4) return
 
 (5) throw
 
Номер 2
Функция вычисляет произведение двух чисел. Исходные данные вводятся с клавиатуры. Какие проверки целесообразно ввести в программе?
Ответ:
 (1) проверка исходных данных на равенство нулю 
 (2) проверка, что исходные данные являются числами и эти числа больше нуля 
 (3) проверка, что исходные данные являются числами 
 (4) проверки не нужны, все возможные ошибки отловит компилятор 
Номер 3
Сколько блоков catch
может быть после блока try
?
Ответ:
 (1) количество блоков catch
зависит от количества блоков try
 
 (2) ни одного 
 (3) минимум один 
Упражнение 2:
Номер 1
Возможно ли использовать механизм исключительных ситуаций в деструкторах
Ответ:
 (1) можно, но обрабатывать их следует внутри деструктора 
 (2) да, никаких проблем возникнуть не может 
 (3) нет, компилятор выдаст ошибку 
 (4) да, но результат будет непредсказуем 
Номер 2
На каком этапе обнаруживаются ошибки в алгоритме программы?
Ответ:
 (1) на этапе компиляции 
 (2) на этапе выполнения 
 (3) они могут не проявиться никогда, все зависит от входных данных 
Упражнение 3:
Номер 1
Если заданы классы
class A {... } A1;
class B : public A { ... } B1;
class C : public A { ... } C1;
то что будет выведено при выполнении оператора
throw (C1);
а обработка исключительной ситуации записана
catch (B& b) { cout << 1; }
catch (C& c) { cout << 2; }
catch (A& a) { cout << 3; }
catch (...) { cout << 4; }
Ответ:
 (1) 1
 
 (2) 2
 
 (3) 3
 
 (4) 4
 
 (5) 3 4
 
 (6) 2 3 4
 
Номер 2
Если заданы классы
class A {... } A1;
class B : public A { ... } B1;
class C : public A { ... } C1;
то что будет выведено при выполнении оператора
throw (A1);
а обработка исключительной ситуации записана
catch (B& b) { cout << 1; }
catch (C& c) { cout << 2; }
catch (A& a) { cout << 3; }
catch (...) { cout << 4; }
Ответ:
 (1) 1
 
 (2) 2
 
 (3) 3
 
 (4) 4
 
 (5) 3 4
 
 (6) 2 3 4
 
Номер 3
Если заданы классы
class A {... } A1;
class B : public A { ... } B1;
class C : public B { ... } C1;
то что будет выведено при выполнении оператора
throw (C1);
а обработка исключительной ситуации записана
catch (B& b) { cout << 1; }
catch (C& c) { cout << 2; }
catch (A& a) { cout << 3; }
catch (...) { cout << 4; }
Ответ:
 (1) 1
 
 (2) 2
 
 (3) 3
 
 (4) 4
 
 (5) 1 2 3 4
 
 (6) 2 3 4
 
Упражнение 4:
Номер 1
Если в конструкторе класса
class A {
public:
A() { ptr = new char[size];
Init(); }
~A() { if (ptr) delete[] ptr; }
char* ptr; };
произойдет исключительная ситуация, будет ли потеряна память при откате по стеку?
Ответ:
 (1) да, будет, во всех случаях 
 (2) будет, только если объект класса создавался с помощью new
 
 (3) будет, если создавалась автоматическая переменная класса a
 
 (4) нет, не будет 
 (5) зависит от конкретного компилятора 
Номер 2
Оператор throw
без аргументов
Ответ:
 (1) повторно вызывает обрабатываемую исключительную ситуацию 
 (2) вызывает последнюю необработанную исключительную ситуацию 
 (3) вызывает исключительную ситуацию типа Exception
 
Номер 3
Блок try catch
Ответ:
 (1) должен стоять в функции main
 
 (2) заключает участок кода, в котором может сложиться исключительная ситуация 
 (3) должен заканчиваться catch (...)
 
 (4) может быть повторен несколько раз в одной функции 
 (5) не может быть вложенным 
Номер 4
Об ошибке в конструкторе класса может сигнализировать:
Ответ:
 (1) возвращаемое значение 
 (2) исключительная ситуация 
 (3) вызов деструктора сразу в конструкторе 
 (4) установленный атрибут-флаг объекта 
Упражнение 5:
Номер 1
Отметьте, какие возможности языка Си++ помогают предупреждать ошибки:
Ответ:
 (1) наличие встроенных типов данных 
 (2) контроль типов при компиляции 
 (3) возможность использовать указатели вместо массивов 
 (4) обязательность объявления функций до их использования 
Номер 3
Отметьте те средства языка Си++, которые относятся к диагностике ошибок
Ответ:
 (1) возвращаемое значение функции 
 (2) исключительные ситуации 
 (3) создание объектов 
 (4) глобальные переменные, хранящие состояние 
 (5) флаг состояния объекта 
 (6) преобразование типов переменной 
Упражнение 6:
Номер 1
Что может быть аргументом оператора throw
?
Ответ:
 (1) целое число 
 (2) объект класса 
 (3) строка 
 (4) ноль 
 (5) условный оператор 
 (6) вызов деструктора объекта 
 (7) вызов оператора
return 
Номер 2
Какие требования предъявляются к классу исключительных ситуаций?
Ответ:
 (1) он должен быть наследован от специального класса exception
 
 (2) он не может использовать множественное наследование 
 (3) он должен содержать атрибуты только встроенных типов 
 (4) он может быть произвольным классом 
Номер 3
Что происходит при попытке выполнить оператор return
внутри блока catch
?
Ответ:
 (1) аварийная остановка программы 
 (2) повторное создание обрабатываемой исключительной ситуации 
 (3) выход из функции 
 (4) ошибка компиляции 
 (5) ошибка выполнения 
Упражнение 7:
Номер 1
Что будет на экране после выполнения программы
#include <iostream.h>
short x = 4, i = 0;
void fun1()
{ if (i == 0) throw 2; }
int fun2()
{ --x; fun1(); x++; return x; }
int main()
{ try
{ fun2(); }
catch (int)
{ cout << "Exception "; }
cout << x << " " << i;
}
Ответ:
 (1) Exception
 
 (2) Exception 4 0
 
 (3) Exception 3 0
 
 (4) ошибка компиляции
 
Номер 2
Что будет на экране после выполнения программы
#include <iostream.h>
short x = 4, i = 0;
void fun1()
{ if (i == 5) throw 2; }
void fun2()
{ --x; fun1(); x++; }
int main()
{ try
{ fun2(); }
catch (int)
{ cout << "Exception "; }
cout << x << " " << i;
}
Ответ:
 (1) Exception
 
 (2) Exception 4 0
 
 (3) Exception 3 0
 
 (4) 4 0
 
Номер 3
Что будет на экране после выполнения программы
#include <iostream.h>
short x = 4, i = 0;
void fun1()
{ double p=2;
if (!i) throw p; }
void fun2()
{ --x; fun1(); x++; }
int main()
{ try
{ fun2(); }
catch (double)
{ cout << "Exception "; }
cout << x << " " << i;
}
Ответ:
 (1) Exception
 
 (2) Ошибка компиляции
 
 (3) Exception 3 0
 
 (4) 4 0
 
Упражнение 8:
Номер 1
Какой результат будет у следующего выражения?
int main()
{ try
{
try
{
try { throw 1; }
catch (int) { cout << "Exception 1"; }
}
catch (int) { cout << "Exception 2"; }
}
catch (int){ cout << "Exception 3"; }
return 0;
}
Ответ:
 (1) Exception 1Exception 2Exception 3
 
 (2) Exception 1Exception 2
 
 (3) Exception 1
 
 (4) Exception 2
 
 (5) Exception 3
 
Номер 2
Какой результат будет у следующего выражения?
int main()
{
try
{
try
{
try{ throw 1; }
catch (float) { cout << "Exception 1"; }
}
catch (int){ cout << "Exception 2"; }
}
catch (int){ cout << "Exception 3"; }
return 0;
}
Ответ:
 (1) Exception 1Exception 2Exception 3
 
 (2) Exception 1Exception 2
 
 (3) Exception 1
 
 (4) Exception 2
 
 (5) Exception 3
 
Номер 3
Что будет выведено на экран после выполнения программы?
int main()
{
try{
try
{ throw 3.14; }
catch (int) { cout << "Exception 1"; }
}
catch (...)
{ cout << "Exception 2"; }
return 0;
}
Ответ:
 (1) Exception 1Exception 2
 
 (2) Exception 1
 
 (3) Exception 2