Главная / Программирование /
Язык программирования C++ / Тест 5
Язык программирования C++ - тест 5
Упражнение 1:
Номер 1
Прототип функции задает
Ответ:
 (1) тип функции, включая количество и тип аргументов и тип результата 
 (2) возможность выполнения этой функции из программ на других языках программирования 
 (3) имя функции и минимальное количество параметров 
Номер 2
Сколько функций может быть в программе С++?
Ответ:
 (1) ни одной 
 (2) минимум одна 
 (3) не больше 100 
Номер 3
Отметьте истинное высказывание, если вызываются подряд несколько функций:
Ответ:
 (1) все функции выполняются одновременно 
 (2) после выполнения одной функции управление переходит к следующей 
 (3) последовательность выполнения функций определяется компилятором 
Упражнение 2:
Номер 1
Отметьте, какому определению функции может соответствовать вызов func(5.98)
:
Ответ:
 (1) int func(double x = 0, double y);
 
 (2) void func(double x);
 
 (3) double func(double x, int y = 12, int z = 5);
 
 (4) void func(float arg1, float arg2 = 0);
 
 (5) float func(float g, float f);
 
Номер 2
Если в программе уже имеется функция с прототипом int func(int k, double f)
, то какое из следующих объявлений не вызовет ошибки компиляции?
Ответ:
 (1) double func(int m, double g)
 
 (2) int func(double x, int y)
 
 (3) void func(int m, double g = 3.14)
 
Номер 3
Отметьте допустимые имена функций:
Ответ:
 (1) _This_Function_12_x_
 
 (2) ax%u7
 
 (3) fffffffAAAAAA
 
 (4) 3_pi
 
 (5) calculateIt
 
 (6) thisname_is_too_long_forafunction
 
Упражнение 3:
Номер 1
Если функция вычисления суммы целых чисел от 1
до n
имеет прототип int sum(int n)
, запишите определение функции, используя рекурсию:
Ответ:
 (1)
{if (n == 1) return 1;
else return n + sum (n – 1);} 
 (2)
{if (n == 1) return 1;
else return sum(n);} 
 (3)
{if (n == 1) return 1;
else return sum(n) + (n – 1);} 
 (4)
{if (n == 1) return 1;
else return sum(n) + sum (n-1);} 
Номер 2
Если функция вычисления факториала n
имеет прототип int fact(int n)
, отметьте код, использующий рекурсию и правильно вычисляющий значение факториала:
Ответ:
 (1)
{if (n == 0 || n==1) return 1;
else return n * fact (n -1);} 
 (2)
{if (n == 0 || n==1) return 1;
else return fact(n);} 
 (3)
{if (n == 0 || n==1) return 1;
else return fact(n) * fact(n-1);} 
 (4)
{if (n == 0 || n==1) return 1;
else return fact(n)*(n-1);} 
Номер 3
Если функция вычисления суммы целых чисел, находящихся между двумя заданными (начальное и конечное включительно), имеет прототип int sum(int start, int end)
, запишите определение функции, используя рекурсию:
Ответ:
 (1)
{if (end == start) return 1;
else return end + sum(start, end -1);} 
 (2)
{if (end == start) return start;
else return end + sum(start, end -1);} 
 (3)
{if (end >= start) return 0;
else return end + sum(start, end -1);} 
Упражнение 4:
Номер 1
Совокупность типов формальных параметров, их порядка и имени функции определяет:
Ответ:
 (1) тип возвращаемого функцией значения 
 (2) сигнатуру (подпись) функции 
 (3) идентификатор функции 
 (4) последовательность описаний и определений функции 
Номер 2
Если функция имеет тип void
, то неверно, что
Ответ:
 (1) она не может содержать оператор return
 
 (2) оператор return
в теле функции необязателен 
 (3) функция не возвращает никакого значения 
Номер 3
Отметьте ошибочное утверждение:
Ответ:
 (1) Си++ обеспечивает строгий контроль типов 
 (2) строгое согласование по типам между формальными и фактическими параметрами требует, чтобы в модуле до первого обращения к функции было помещено либо ее описание, либо определение 
 (3) при обращении к функции фактические параметры заменяются формальными 
Упражнение 5:
Номер 1
Что вычисляет эта функция:
double func(double x, int n) {
if (n == 0) return 1;
if (x == 0) return 0;
if (n > 0) return x * func(x, n-1);
if (n < 0) return func(x, n+1) / x;
}
Ответ:
 (1) дробную степень вещественного ненулевого числа 
 (2) целую степень любого числа 
 (3) факториал 
 (4) любую степень любого числа 
Номер 2
Как называется функция, которая вызывает саму себя?
Ответ:
 (1) конструктором 
 (2) деструктором 
 (3) подставляемой 
 (4) рекурсивной 
Номер 3
В чем разница между фактическими и формальными параметрами?
Ответ:
 (1) формальные параметры могут использоваться только вне тела функции, а фактические - используются как вне функции, так и внутри ее 
 (2) формальные параметры определены в заголовке функции, а фактические - значения, с которыми функция вызывается 
 (3) нет различий 
Упражнение 6:
Номер 1
Какое из следующих утверждений об операторе return
является верным?
Ответ:
 (1) оператор return
должен стоять последним в теле функции 
 (2) оператор return
завершает выполнение функции 
 (3) в теле функции должен присутствовать только один оператор return
 
Номер 2
Укажите правильный вызов функции, объявленной следующим образом: void Iterat(int a, float b, short c);
Ответ:
 (1) int res = 0; res = res + Iterat(2,4,34);
 
 (2) int k = 1; float l = 3; short m = 4; Iterat(k,l,m);
 
 (3) float d = Iterat(2,3.2,6);
 
Номер 3
Укажите правильное объявление функции
Ответ:
 (1) int MyFunc(double x, y, int i);
 
 (2) void correct(double d = 3.14, double a);
 
 (3) int sum(int j, int k, int x = 0);
 
Упражнение 7:
Номер 1
Если функция вычисления суммы целых чисел от 1 до n
имеет прототип int sum(int n)
, то как будет выглядеть запись определения функции с использованием рекурсии?
1.{if (n == 1) return 1;
else return n + sum (n - 1);}
2. {if (n == 1) return 1;
else return sum(n);}
Ответ:
 (1) первый вариант 
 (2) второй вариант 
 (3) оба верны 
 (4) оба ошибочны 
Номер 2
Если функция вычисления факториала n имеет прототип int fact(int n)
, то как будет выглядеть запись определения функции с использованием рекурсии?
1.{if (n == 1 || n == 0) return 1;
else return n * fact (n -1);}
2.{if (n == 1 || n == 0) return 1;
else return fact(n);}
Ответ:
 (1) первый вариант 
 (2) второй вариант 
 (3) оба верны 
 (4) оба ошибочны 
Номер 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++;
}
 
Упражнение 8:
Номер 1
Имеется функция
int sum(int a,int a1=2,int a2,int a3,int a4)
{return a+a1+a2+a3+a4;}
что будет выведено на экран после выполнения кода cout<<sum(9,8,7,6);
Ответ:
 (1) ничего,будет ошибка компиляции 
 (2) 30 
 (3) 32 
Номер 2
Произойдет ли ошибка компиляции если функцию
int sum(int a, int a1, int a2, int a3, int a4=2)
{return a+a1+a2+a3+a4;}
вызвать в функции main
следующим образом
int main()
{
int z=1,b=1,c=1,d=1,e=1;
sum(z,b,c,d,e);
....
}
Ответ:
 (1) нет 
 (2) да, потому что значение возвращаемое функцией не присваивается никакой переменной 
 (3) да, потому что мы пытаемся изменить значение аргумента по умолчанию 
Номер 3
В какой строке будет ошибка компиляции
1 int sum(int a,int b,int c,int d=4){
2 int result;
3 result=128*a+b-c*d;
4 d=25;
5 a=d;
6 return res;
7 }
Ответ:
 (1) ошибок нет,все верно 
 (2) в 4 
 (3) в 5 
 (4) в 6