игра брюс 2048
Главная / Программирование / Язык программирования 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