игра брюс 2048
Главная / Программирование / Язык программирования C++ / Тест 9

Язык программирования C++ - тест 9

Упражнение 1:
Номер 1
Что из себя представляет динамическое выделение памяти?

Ответ:

 (1) память под объект (переменную) выделяется каждый раз при обращении к переменной 

 (2) память под объект (переменную) может выделяться не сразу, а в процессе работы программы, освобождение памяти производится автоматически после завершения программы 

 (3) память под объект (переменную) может выделяться не сразу, а в процессе работы программы, освобождение памяти производится вручную 


Номер 2
Какое из приведенных выражений верно?

Ответ:

 (1) int a; a = new int[20]; 

 (2) int a; a = new int(20); 

 (3) int *a; a = new int[20]; 

 (4) int *a; a = new 20; 

 (5) int *a; a = new sizeof(int*20); 

 (6) int a; a = new sizeof(int*20); 


Номер 3
Что нужно сделать для освобождения памяти после выполнения такого кода ?
 char *a; a = new char[20];

Ответ:

 (1) delete [] a; 

 (2) delete a[]; 

 (3) delete a; 


Номер 4
Какое выражение верно с точки зрения целесообразности использования динамического распределения памяти?

Ответ:

 (1) char* c = new char[5]; c = "aabb"; 

 (2) char* c = "aabb"; 

 (3) char c; c = new string("aabb"); 


Упражнение 2:
Номер 2
Какой будет результат ?
  
  int f(int& x) {
  static int a = 0; if (!a) a = ++x; return a;}
  int y = 6; f(y); cout << f(y) << y; 
  

Ответ:

 (1) 77 

 (2) 78 

 (3) 70 

 (4) 79 


Номер 3
Какой будет результат вывода?

static int a; a = 9;
{
    static int a = 8;
}
cout << a; 

Ответ:

 (1) 9 

 (2) 8 

 (3) 0 


Упражнение 3:
Номер 1
Что будет напечатано в результате выполнения следующего кода?
  
  int x=39, *p = &x; 
  cout << p << "__" << *p ;
  

Ответ:

 (1) ошибка компиляции 

 (2) не определено 

 (3) адрес в памяти__39 

 (4) 39_адрес в памяти 


Номер 2
Что будет напечатано в результате выполнения следующего кода?
  
  char x[] = "Hello, world";
  char* p = x; p += 4; cout << *p;
  

Ответ:

 (1) o 

 (2) o, world 

 (3) Hello, world 


Номер 3
Что будет выведено в результате выполнения следующего кода?
  
  int a[4] = { 1,2,3,4};
  int* p = a; cout << (*p+2) + *p;
  

Ответ:

 (1) 4 

 (2) 6 

 (3) адрес памяти 

 (4) 10 


Упражнение 4:
Номер 1
 Что выполняет операция "delete [] v;" в данном ниже коде:
	
	class MyClass 
{ 
   int sz; // число элементов 
   int * v; // указатель на целые 
  public: 
    MyClass ( int ); 
    ~MyClass ();  
    int&operator [] ( int index ); // операция индексации 
};
…
MyClass::~ MyClass() 
{ 
  delete [] v; 
}
	
	

Ответ:

 (1) удаляет первый элемент из массива "v" 

 (2) удаляет последний элемент из массива "v" 

 (3) удаляет весь массив "v", освобождая память 

 (4) удаляет указатель на массив "v" из памяти 


Номер 2
Что произойдёт при использовании неправильного адреса в операции delete?

Ответ:

 (1) произойдёт аварийное завершение программы 

 (2) программа выдаст сообщение,что память освобождается по неправильному адресу 

 (3) результат непредсказуем 


Номер 3
Что произойдёт если операция выделения памяти new завершится неудачно?

Ответ:

 (1) произойдёт аварийное завершение программы 

 (2) программа выдаст сообщение о невозможности выделения памяти под данный объект и вернёт ненулевой указатель 

 (3) выделение памяти под объект не произойдёт, и операция new вернёт нулевой указатель или будет сгенерировано исключение 


Упражнение 5:
Номер 1
Какой будет результат у данного выражения?
	
	int *i = new int;
	...
	i = new int;
	...
	delete i;
	

Ответ:

 (1) ошибка компиляции 

 (2) утечка памяти 

 (3) выделение памяти под переменную не произойдёт 


Номер 3
Какой будет результат у данного выражения?
	
	long *L = new long;
	*L = 4;
	delete L;
	cout << *L;
	

Ответ:

 (1) 4 

 (2) 5 

 (3) ошибка компиляции 

 (4) непредсказуемое поведение программы, возможно, случайное число 


Упражнение 6:
Номер 1
Что описывает данная строка программы: float mas=new int[3][2]?

Ответ:

 (1) создание двумерного динамического массива размерности 3*2 

 (2) создание одномерного динамического массива из 3 элементов 

 (3) создание одномерного динамического массива из 2 элементов 

 (4) данная строка представляет собой ошибочную запись и работать не будет 


Номер 2
Определите результат выполнения следующего кода:
	
	 float *thingPtr = new float (3.14159)
	
	

Ответ:

 (1) возникнет ошибка компиляции, поскольку нельзя задавать значение переменной в процессе её создания 

 (2) возникнет ошибка компиляции, поскольку при создании объекта не указан размер выделяемой памяти 

 (3) данная строка задает значение объекту типа float 


Номер 3
В чём заключаются недостатки при использовании передачи аргумента в функцию по значению?

Ответ:

 (1) затраты времени на копирование значений и затраты памяти для хранения копии при передаче больших объёмов данных 

 (2) невозможность изменения данных в их источнике 

 (3) невозможность передачи больших объёмов данных 


Упражнение 7:
Номер 2
Какой будет результат у данного выражения?
	
	int f1(int & x1, int *x2) { return ++x1 + ++(*x2); }
	int main()
	  { int a = 7, k = 1;
		k = f1(a, &k);
		cout << a << " " << k;
	  }	

Ответ:

 (1) 7 10 

 (2) 8 1 

 (3) 8 10 


Номер 3
Что будет выведено в результате выполнения данного кода?
	
  int f1(int x1, int &x2) { return ++x1 + (++x2); }
	int main()
	  { int a = 7, k = 1;
		k = f1(a, k);
		cout << a << " " << k;
	  }	

Ответ:

 (1) 7 1 

 (2) 8 10 

 (3) 7 10 


Упражнение 8:
Номер 1
Что будет выведено на экран в результате выполнения данного кода?
	
int main()
   { 
     ......
        float a1 = 7, a2 = 8;
           {
              float p=4;
              float p1=5;
              p1+=5;
           }
	if (a2) a1+=a2+p1++;
	cout << a1;
	.....
  }	

Ответ:

 (1) 25 

 (2) 24 

 (3) ничего из-за ошибки компиляции 


Номер 2
В какой строке(строках) ошибка?
	
1     int f1() { 
2     char ch, ch1='a', ch2='b', ch3='c';
3     ch=ch1+ch2+ch3;
4     f1=int(ch);
5     return f1; 
6     }
	
                            

Ответ:

 (1) 1 и 3 

 (2) 1, 3, 4 и 5 

 (3) 4 и 5 


Номер 3
Что будет выведено на экран, если вызвать данную функцию последовательно три раза?

void f1() {
      static int flag=0; 
      if (!flag) {
        cout << "false ";
        flag=5;
      }
       else {
        cout <<"true ";
        flag=0;
      }
}

Ответ:

 (1) false false false 

 (2) false true false 

 (3) true false true 




Главная / Программирование / Язык программирования C++ / Тест 9