Главная / Программирование /
Программирование / Тест 44
Программирование - тест 44
Упражнение 1:
Номер 1
Пусть расположенный в статической памяти
целочисленный массив a
описан как
static int a[] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
};
Пусть в программе задана функция суммирования массива
с прототипом
int sum(const int *m, int n);
где m
- константный указатель на начало
массива, n
- число его элементов. Укажите,
чему будет равно значение переменной s
в
результате выполнения следующего фрагмента программы:
int s = sum(a+4, 4);
Ответ:
 26 
Номер 2
Пусть расположенный в статической памяти
целочисленный массив a
описан как
static int a[] = {
10, 9, 8, 7, 6, 5, 4, 3, 2, 1
};
Пусть в программе задана функция суммирования массива
с прототипом
int sum(const int *m, int n);
где m
- константный указатель на начало
массива, n
- число его элементов. Укажите,
чему будет равно значение переменной s
в
результате выполнения следующего фрагмента программы:
int s = sum(a+3, 4);
Ответ:
 22 
Номер 3
Пусть расположенный в статической памяти
целочисленный массив a
описан как
static int a[] = {
1, 1, 2, 2, 3, 3, 4, 4, 5, 5
};
Пусть в программе задана функция суммирования массива
с прототипом
int sum(const int *m, int n);
где m
- константный указатель на начало
массива, n
- число его элементов. Укажите,
чему будет равно значение переменной s
в
результате выполнения следующего фрагмента программы:
int s = sum(a+5, 3);
Ответ:
 11 
Упражнение 2:
Номер 1
Пусть переменные a
, p
,
q
, n
описаны следующим образом:
double a[10]; double *p;
const double *q; int n;
Отметьте, какие из приведенных ниже операторов языка C/C++
корректны.
Ответ:
 (1)
p = &a[7] + n;
 
 (2)
q = &p[3] + 2;
 
 (3)
p = &q[2] + 3;
 
 (4)
n = p - a;
 
 (5)
n = q - a;
 
Номер 2
Пусть переменные a
, p
,
q
, n
описаны следующим образом:
double a[16]; double *p;
const double *q; int n;
Отметьте, какие из приведенных ниже операторов языка C/C++
корректны.
Ответ:
 (1)
q = a + 16;
 
 (2)
q = &p[3] + 2;
 
 (3)
p = &q[2] + 3;
 
 (4)
n = p - &a[2];
 
 (5)
n = q - a;
 
Номер 3
Пусть переменные a
, p
,
q
, n
описаны следующим образом:
double a[10]; double *p;
const double *q; int n;
Отметьте, какие из приведенных ниже операторов языка C/C++
корректны.
Ответ:
 (1)
p = a + 10;
 
 (2)
p = &q[5] + 2;
 
 (3)
q = &p[5] + 5;
 
 (4)
n = q - &a[4];
 
 (5)
n = p - a;
 
Упражнение 3:
Номер 1
Мы хотим реализовать функцию, которая находит
индекс максимального элемента вещественного массива.
Отметьте, какие из возможных прототипов данной функции
корректны.
Ответ:
 (1)
int indmax(double a[], int n);
 
 (2)
int indmax(const double *a, int n);
 
 (3)
void indmax(const double a[], int n, int* idx);
 
 (4)
void indmax(double *a, int n, int* idx);
 
Номер 2
Мы хотим реализовать функцию product
, которая находит
произведение элементов вещественного массива a
длины n
.
Отметьте, какие из возможных прототипов данной функции
корректны.
Ответ:
 (1)
double product(double *a, int n);
 
 (2)
double product(const double a[], int n);
 
 (3)
void product(const double *a, int n, double* prod);
 
 (4)
void product(double a[], int n, double* prod);
 
Номер 3
Мы хотим реализовать функцию length
, которая находит
длину вектора в трехмерном пространстве. Вектор задается массивом
из трех его координат.
Отметьте, какие из возможных прототипов данной функции
корректны.
Ответ:
 (1)
double length(double v[3]);
 
 (2)
double length(double *v);
 
 (3)
double length(const double v[]);
 
 (4)
double length(const double *v);
 
Упражнение 4:
Номер 1
Рассмотрим следующий фрагмент программы на С/С++:
static int *p = NULL;
. . .
p = (int *) malloc(sizeof(int));
*p = 123;
Где хранится значение выражения "*p
" (т.е.
число 123)?
Ответ:
 (1)
В статической памяти.
 
 (2)
В динамической памяти.
 
 (3)
В стеке.
 
Номер 2
Рассмотрим следующий фрагмент программы на С++:
static double *p = 0;
. . .
p = new double[100];
*p = 1.5;
Где хранится значение выражения "*p
" (т.е.
число 1.5)?
Ответ:
 (1)
В статической памяти.
 
 (2)
В динамической памяти.
 
 (3)
В стеке.
 
Номер 3
Рассмотрим следующий фрагмент программы на С++:
static double *a = new double[10];
a[0] = 3.7;
Где хранится значение выражения "a[0]
" (т.е.
число 3.7)?
Ответ:
 (1)
В статической памяти.
 
 (2)
В динамической памяти.
 
 (3)
В стеке.
 
Упражнение 5:
Номер 1
Среди указанных ниже операторов языка C/C++
отметьте корректные.
Ответ:
 (1)
double x = new double;
 
 (2)
double* x = new double(1.5);
 
 (3)
double x = new double[100];
 
 (4)
double* x = (double *) malloc(100 * sizeof(double));
 
Номер 2
Среди указанных ниже операторов языка C/C++
отметьте корректные.
Ответ:
 (1)
int x = new int;
 
 (2)
int* x = new int(1000);
 
 (3)
int* x = new int[1000];
 
 (4)
int* x = (int *) malloc(1000 * sizeof(int));
 
Номер 3
Среди указанных ниже операторов языка C/C++
отметьте корректные.
Ответ:
 (1)
int* x = new int(8);
 
 (2)
int* x = new int(1000);
 
 (3)
int x = new int[1000];
 
 (4)
int* x = (int *) malloc(8 * sizeof(int));