Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 семестр / Прорешаные билеты.pdf
Скачиваний:
0
Добавлен:
28.03.2025
Размер:
1.79 Mб
Скачать

Ответ: меняется порядок столбцов.

34.

Условия:

1.Массив S[8]:

a.Это массив из 8 символов, где хотя бы один из них равен '\0' (терминальный ноль, используемый для обозначения конца строки в C/C++).

2.Указатель p:

a.Он инициализируется адресом первого элемента массива S (p = S).

3.Цикл for:

for

(p

=

S;

*p;

p++);

a.Начальное значение p равно адресу первого элемента массива.

b.Условие цикла: *p (значение по адресу, на который указывает p) должно быть истинным (не равно 0).

c.Инкремент p++: указатель смещается на следующий элемент массива.

4.Цикл завершится, когда *p == '\0', т.е. указатель p указывает на символ '\0'.

Вывод:

После завершения цикла указатель p будет хранить адрес первого символа '\0' в

массиве S.

Правильный ответ:

Указатель p будет хранить адрес первого символа '\0' в массиве S.

35.

Ответ: по идее как на скрине.

36.

Ответ: перейти в конец файла для записи новых данных после уже имеющихся; переместиться на любую позицию внутри файла; осуществить форматированный вывод данных.

37.

#include <iostream> int a[] = { 1,2,3,4,5 };

int* p[] = { a,a + 1,a + 2,a + 3,a + 4 }; int** pp = p;

void main()

{pp++; pp++; std::cout << pp - p << ' ' << *pp - a << ' ' << **pp;}

Комментарий:

Массив p содержит указатели на элементы массива a.

p[0] указывает на a[0] (т.е. на 1),

p[1] указывает на a[1] (т.е. на 2),

p[2] указывает на a[2] (т.е. на 3),

p[3] указывает на a[3] (т.е. на 4),

p[4] указывает на a[4] (т.е. на 5).

Объявление указателя на указатель pp:

int** pp = p; Указатель pp инициализируется указателем на массив указателей p. Таким образом, pp изначально указывает на p[0].

Увеличение указателя pp:

pp++; // Теперь pp указывает на p[1] pp++; // Теперь pp указывает на p[2] После двух инкрементов pp указывает на третий элемент массива p, то

есть на p[2], который указывает на a[2] (т.е. на 3).

Вывод результатов:

std::cout << pp - p << ' ' << *pp - a << ' ' << **pp;

pp - p: Это выражение вычисляет разницу между указателями pp и p. Поскольку pp указывает на p[2], а p указывает на p[0], разница будет равна 2 (то есть pp указывает на второй элемент массива p).

pp - a: Здесь pp разыменовывает указатель pp, получая p[2], который указывает на a[2]. Разница между p[2] и a (который указывает на a[0]) также будет равна 2, так как a[2] находится на два элемента дальше от начала массива a.

pp: Это выражение разыменовывает pp дважды. Сначала *pp дает указатель на a[2], а затем pp возвращает значение, на которое указывает этот указатель, то есть 3.

Ответ: 2 2 3.

38.

Ответ: setw; 15; 5; scientific ”\n”.

40.

Ответ: как на картинке.

Если функция должна изменить значение переменной, имя которой указано в списке аргументов при вызове функции, то в списке формальных параметров этой переменной должен соответствовать параметр, который передается "по адресу" или "по ссылке",

чтобы функция могла напрямую изменять исходную переменную. Разберем варианты:

1.Параметр-ссылка

Правильный ответ.

Параметр-ссылка (&) позволяет функции работать с оригинальной переменной, а не с её копией.

Пример:

 

void

 

modify(int

&x)

{

 

x

=

42;

//

Изменяет

оригинальную

переменную

 

}

 

 

 

 

 

 

 

При

 

вызове:

 

int

a

=

10;

modify(a);

// a теперь равно 42

2.Параметр со значением по умолчанию

Неправильно.

Значение по умолчанию просто задаёт параметру значение, если аргумент для него не передан. Это не имеет отношения к изменению переменной.

Пример: void example(int x = 10) { x = 42; // Меняется только копия, оригинальная переменная не

изменяется}