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

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

Упражнение 1:
Номер 1

Укажите правильные объявления функций:


Ответ:

 (1) void f(int, char*); 

 (2) void f(double, char*, int=0); 

 (3) void f(double, int* =0, int=1); 

 (4) void f(double=0, int*, int=1); 

 (5) void f(double=0 ...); 


Номер 2

Когда функция вызывает саму себя она называется:


Ответ:

 (1) конструктором 

 (2) деструктором 

 (3) подставляемой 

 (4) рекурсивной 


Номер 3
В каких строках программного кода происходит объявления функций?

#include <iostream.h>
int sum(int a, int b);
int main(){
int a = 2, b - 3, c, d;
с = sum(a, b); 
cin >> d;
cout << sum(c, d);
return 0;
}
int sum(int а, int b){ 
return (а + b);
}


Ответ:

 (1) во второй 

 (2) в третьей 

 (3) в пятой 

 (4) в десятой 


Упражнение 2:
Номер 1

Что называется фактическими параметрами функции?


Ответ:

 (1) параметры, указанные при описании функции  

 (2) параметры, передаваемые при вызове функции 

 (3) параметры по умолчанию 


Номер 2
Изменяются ли параметры, передаваемые в функцию?

Ответ:

 (1) никогда не изменяются 

 (2) всегда изменяются 

 (3) изменяются, если они переданы по значению 

 (4) изменяются, если они переданы по ссылке 


Номер 3

Перечислите, что характерно для оператора return?


Ответ:

 (1) возвращает значение типа, указанное в описании функции  

 (2) может встречаться только один раз в теле функции 

 (3) завершает выполнение функции 

 (4) может не содержать возвращаемого значения 


Упражнение 3:
Номер 1

Что можно делать с указателями на функции?


Ответ:

 (1) передавать в функции 

 (2) возвращать из функций 

 (3) хранить в массивах 

 (4) присваивать другим указателям на функции 


Номер 2

Отметьте все допустимые способы перегрузки данной функции:

void func(double a, int b);

Ответ:

 (1) void func(int a, int b); 

 (2) int func(double a, char c); 

 (3) void func(int a, double b); 

 (4) void func(int a=1, double b); 


Номер 3

Укажите результат выполнения следующего кода:

int factorial(int x) { if(x==1) return 1; else return x*factorial(x-1); } int Func(int y) { y = factorial(3); return y+10; } int _tmain(int argc, _TCHAR* argv[]) { int x = 0; int z = 0; z = Func(x); printf("z=[%d] x=[%d]",z,x); int i; scanf("%d",&i); return 0; }

Ответ:

 (1) z=[16] x=[0] 

 (2) ошибка компиляции в строке "return x*factorial(x-1);" функции "int factorial(int x)": вызов функции самой себя 

 (3) z=[16] x=[6] 

 (4) ошибка компиляции в строке "y = factorial(3);" функции "int Func(int y)" : попытка присвоить значение входному параметру 


Упражнение 4:
Номер 1

Если в качестве параметра функции указан массив, то передается:


Ответ:

 (1) значение первого элемента массива 

 (2) указатель на последний элемент массива 

 (3) указатель на его первый элемент 


Номер 2

Отметьте правильные прототипы функций, использующих в качестве параметра массив:


Ответ:

 (1) void F(int Ar[]); 

 (2) int F(const int array[], int sz); 

 (3) int strlen(const char*);  


Номер 3

Отметьте правильный прототип функции, использующий в качестве параметра многомерный массив int m[10][2]:


Ответ:

 (1) void F(int m[][2]); 

 (2) int F(int m[]); 

 (3) void F(int Ar[][], int sz); 


Упражнение 5:
Номер 1

Какой будет результат выполнения следующей программы?

int SM(const int A[], int N) { int S = A[0]; for (int i = 1; i < N; i++) S += A[i]; return S; } int main() { #define Bmax 3 int B[5] = {1, 2, 3}; cout << SM(B, Bmax) << endl; }

Ответ:

 (1) 7 

 (2) 0 

 (3) 6 

 (4) ошибка выполнения 


Номер 2

Какой будет результат выполнения следующей программы?

int SM(const int A[], int N) { int S = A[0]; for (int i = 1; i < N; i++) S += A[i]; return S; } int main() { #define Bmax 4 int B[] = {4, 3, 2, 1}; cout << SM(B, Bmax) << endl; }

Ответ:

 (1) 7 

 (2) 10 

 (3) 6 

 (4) ошибка выполнения 


Номер 3

Какой будет результат выполнения следующей программы?

int SM(const int A[], int N) { int S = A[0]; for (int i = 1; i < N; i++) S += A[i]; return S; } int main() { #define Bmax 6 int B[6] = {1, 2, 3, 4, 5, 6}; cout << SM(B + 3, Bmax - 3) << endl; return 1; }

Ответ:

 (1) 18 

 (2) 15 

 (3) 21 

 (4) ошибка выполнения 


Упражнение 6:
Номер 1

Что выводит данная программа, если она верна?

#include <iostream.h> class Х{ public: virtual void fun(int a = 0){cout << a;} }; class Y: public X{ public: virtual void fun(int a = 1) {cout << a ; } }; int main(){ X *px = new X; px->fun(); X *py = new Y; py->fun(); return 0; }

Ответ:

 (1) 0 

 (2) 00 

 (3) ошибку времени исполнения 

 (4) ошибку времени компиляции 


Номер 2

Что описывает оператор typedef float (*ptr)(char);


Ответ:

 (1) тип указателя на функцию, каждая из которых имеет параметр типа char и возвращает значение типа float 

 (2) тип указателя на функцию, каждая из которых имеет параметр типа float и возвращает значение типа char 

 (3) оператор не имеет смысла 


Номер 3

Что описывает оператор typedef void (*ptr)(char *);


Ответ:

 (1) тип указателя на функции, каждая из которых имеет параметр типа char * и не возвращает значения 

 (2) тип указателя на функции, каждая из которых не имеет параметров и возвращает строку символов 

 (3) оператор не имеет смысла 


Упражнение 7:
Номер 1

Что будет напечатано в результате работы следующей программы?

#include <iostream> int f1(int x, int y) { return x + y; } int f2(int x, int y) { return x * x + y * y; } int (*pf1)(int, int); int (*pf2)(int, int); main() { pf1 = &f1; pf2 = &f2; int x = 2, y = 3; cout << (*pf1)(x, y) << ' ' << (*pf2)(x, y) << endl; }

Ответ:

 (1) 5 13 

 (2) 0 0 

 (3) случайные числа 

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


Номер 2

Что будет напечатано в результате работы следующей программы?

#include <iostream> #include <math> double s2(double x) { return sqrt(x); } double s3(double x) { return sqrt(s2(x)); } double (*pf1)(double); double (*pf2)(double); main() { pf1 = &s2; pf2 = &s3; cout << (*pf1)(25) << ' ' << (*pf2)(16) << endl; }

Ответ:

 (1) 5 2 

 (2) 5 4 

 (3) 2 1 

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


Номер 3

Что будет напечатано в результате работы следующей программы?

#include <iostream> double s2(double x) { return x*x; } double s3(double x) { return x*s2(x); } double s4(double x) { return s2(x)*s2(x); } int main() { typedef double (*PTF)(double); PTF pf[3] = {&s2, &s3, &s4}; double x = 2; for(int i = 0; i < 3; i++) cout << (*pf[i])(x) << endl; return 0; }

Ответ:

 (1) 4 8 16 

 (2) 2 3 4 

 (3) 4 8 4 

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


Упражнение 8:
Номер 1

Если в программе уже имеется функция с прототипом int func(int k, double f), то какое из следующих объявлений не вызовет ошибки компиляции?


Ответ:

 (1) double func(int m, double g) 

 (2) int func(double x, int y

 (3) double func(int m, double h, int d = 0) 

 (4) void func(int m, double g = 3.14) 


Номер 2
В программе имеется функция с прототипом int func(int k, double f). Какое из следующих объявлений не приведет к ошибке компиляции?

Ответ:

 (1) char func(int m, void(double g)) 

 (2) int func(double x, int y) 

 (3) func(int m, void(double g = 3.14)) 


Номер 3

В каких случаях произойдет ошибка компиляции?


Ответ:

 (1) void f(int i) { return i++;}  

 (2) int ZZ(float i, int w = 2) { i += w; return; }  

 (3) int x(int w) { int x = w; return w; return x++; }  


Упражнение 9:
Номер 1

Какие из следующих прототипов функций содержат ошибки?


Ответ:

 (1) void func(); 

 (2) char error(int a, b); 

 (3) arr[10] sum(int *, int ); 

 (4) float* func(float, float); 


Номер 2

Какие из следующих прототипов функций содержат ошибки?


Ответ:

 (1) void display(int x=1, char *s); 

 (2) void * func(); 

 (3) void write(void); 

 (4) int[10] sum( int *, int ); 

 (5) int ff( int a, int b = 0, int с = 0 ); 


Номер 3

Какие из следующих прототипов функций содержат ошибки?


Ответ:

 (1) void display(int x=1, char *s=”Hello!”); 

 (2) void func(...); 

 (3) void write(int a, b, c); 

 (4) double[2] sum( int *, int ); 

 (5) float func(float, int ...); 

 (6) int ff1(int x* =3); 


Упражнение 10:
Номер 1

В программе имеется функция с прототипом int func(int k, double f). Какое из следующих объявлений приведет к ошибке компиляции?

1.void func(int m, double g = 3.14) 2.double func(int m, double h, int d = 0)

Ответ:

 (1) первое 

 (2) второе 

 (3) оба ошибочны 

 (4) оба верны 


Номер 2

Выберите корректные (компилируемые) части кода:

1. void func (int i , int x = 0); 2. void func (int i , int x = 0, int y);

Ответ:

 (1) первая 

 (2) вторая 

 (3) обе верны 

 (4) обе ошибочны 


Номер 3

Выберите верные утверждения:


Ответ:

 (1) если функция объявлена встроенной (inline), то компилятор подставляет в точку вызова ее тело 

 (2) если функция не является встроенной, то в точке вызова происходит передача управления функции, выполнение вызывающей функции приостанавливается 

 (3) внутри определения функции можно размещать определения других функций 

 (4) в каждой функции обязательно должен быть оператор возврата return 

 (5) функция должна быть описана до первой ссылки на нее 


Упражнение 11:
Номер 1
Выберите корректный (компилируемый) код:

Ответ:

 (1) void func (int x =0); 

 (2) void func (int x +=0); 

 (3) void func (int x = 0, int y); 


Номер 2

Какие команды используются для создания библиотеки?


Ответ:

 (1) $ CC -c список_ файлов 

 (2) $ ar cr имя_библиотеки список_ файлов с расширением о 

 (3) $ ranlib имя_библиотеки 

 (4) $ CC имя_библиотеки 


Номер 3

Как использовать библиотеку math.a в своей программе myprog.c?


Ответ:

 (1) надо задать режим трансляции командой $ CC myprog.c math.a 

 (2) надо включить библиотеку как заголовочный файл директивой include 

 (3) надо поместить библиотеку в текущий каталог 


Упражнение 12:
Номер 1

С какого символа начинаются директивы препроцессору?


Ответ:

 (1) * 

 (2) < 

 (3) # 


Номер 2

Какая директива препроцессору служит для включения в текст файла текста, содержащегося в другом файле?


Ответ:

 (1) define 

 (2) ifndef 

 (3) include 

 (4) extern 


Номер 3

Какой синтаксис применяется для использования директивы include?


Ответ:

 (1) # include <header_name> 

 (2) # include "header_name" 

 (3) # include 'header_name' 

 (4) # include header_name 




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