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

Экзамен по программированию.

1.

#include <iostream> using namespace std; int main(){

long int N, P, K, Left, Right; P = 1; N = 1; while (P <= N) {

Left = N / (P * 10) * (P * 10); cout <<"N=" << N<<"\n";

cout << "Left=" << Left << "\n"; Right = N % P;

cout <<"Right=" << Right << "\n";

K = ((N % (P * 10) / P + 1) % 10) * P; cout << "K=" << K << "\n";

N = Left + K + Right;

cout << "N=" << N << "\n"; P = P * 10;

cout << "P=" << P << "\n";

}}

Ответ: в каждый разряд прибавляется 1, если значение в разряде – не девять, иначе заменяется на нуль.

2.

Ответ: cin>>I>>J.

3.

#include <iostream> #define LOW 0 #define HIGH 5 #define CHNGE 2 int i = LOW;

workover(int i) { i = (i % i) * ((i * i) / (2 * i) + 4); std::cout << i << ""; return i; }

Ответ: 0. или 5 2 5 5

4.

#include <iostream> #include <iomanip> int a[] = { 0,1,2,3,4 }; int main()

{

int i, *p;

for (p = &a[0], i = 1; i <= 5; i++) std::cout << p[i] << "_";

}

Ответ: 1_2_3_4_@_

5.

Ответ: Если в массиве есть элемент, равный 0.

6.

Ответ: unsigned, int, long.

7.

Ответ: for (;i<10; i++); do {t--;} while(t>0).

8.

#include <iostream> void main()

{

int x = 1, y = 1, z = 1; x += y += z;

std::cout << "x=" << x << " " << "y=" << y << " " << "z=" << z<<"\n"; std::cout << "Otvet" << (x < y ? y : x) << "\n";

}

Комментарий: x+=y+=z y=y+z x=x+y+z

Ответ: 3.

9.

#include <iostream> void main()

{

const int n = 10;

float x[n] = { 12,-3,25,8,-23,14,0,45,-3,8 }; unsigned i, j; unsigned k; float tmp;

for (i = 0; i < n-1;i++)

{

k = i; tmp = x[i];

for (j = i + 1; j < n; j++)

{

if (x[j] > tmp)

{k = j; tmp = x[j];}

}

x[k] = x[i]; x[i] = tmp;

}

for (i = 0; i < n; i++) { std::cout << x[i] << " "; }

}

Ответ: n-1; <; n; >.

10.

Ответ: подсчет колва каждого бита со значением 1 в битах файла

11.

#include <iostream> void main()

{

int x, y, z;

x = 03; y = 02; z = 01;

std::cout << "y && z = " << (y && z) << "\n"; std::cout << "x && y = " << (x && y) << "\n"; std::cout << "x & y = " << (x & y) << "\n";

std::cout << "(x & y && z)=" << (x & y && z) << "\n";

}

Ответ: 1

12.

Ответ: 1,3

13.

Ответ: while (B){S;}

14.

Разберем код построчно и объясним его работу.

Код:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include

 

 

 

 

 

 

 

 

 

 

 

 

<iostream>

#include

 

 

 

 

 

 

 

 

 

 

 

 

<fstream>

void

 

 

 

 

 

main()

 

 

 

 

 

 

{

int

 

 

 

 

 

 

 

 

 

 

 

 

 

i;

int

a[3][3]

=

{

{1,

2,

3},

{4,

5,

6},

{7,

 

8,

9}

};

for

(i

 

 

=

0;

 

i

 

<

 

3;

 

 

i++)

 

std::cout <<

a[i][2

- i]

<< '_'

<<

*a[i] <<

'_'

<< *(*(a +

i)

+

i) <<

'_';

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Разбор кода:

1.Объявление и инициализация массива a[3][3]:

int

a[3][3]

=

{

 

{1,

2,

3},

{4,

5,

6},

{7,

8,

9}

};

Создается двумерный массив a:

 

 

 

 

 

 

 

 

 

 

a[0][0]

=

1

 

 

 

a[0][1]

=

2

 

a[0][2]

=

3

a[1][0]

=

4

 

 

 

a[1][1]

=

5

 

a[1][2]

=

6

a[2][0] = 7

 

a[2][1] =

8

a[2][2] = 9

 

 

 

 

 

 

 

 

2.Цикл for:

for (i = 0; i < 3; i++)

Цикл выполняется для значений i = 0, 1, 2.

3.Обращения к элементам массива: В каждой итерации выводятся три элемента:

a. a[i][2 - i]: Выбирается элемент из массива a, где строка — это i, а столбец — это 2 - i.

Это элементы, лежащие на "вторичной диагонали" массива (сверху справа вниз налево):

a[0][2]

=

3

a[1][1]

=

5

a[2][0]

=

7

b.*a[i]: Это обращение к первому элементу строки i массива.

*a[i] эквивалентно a[i][0].

 

 

a[0][0]

=

1

a[1][0]

=

4

a[2][0] = 7

 

 

c. *(*(a + i) + i): Это разыменование указателя с использованием арифметики указателей.

i.a — это указатель на первый элемент массива.

ii.a + i — это указатель на i-ю строку массива.

iii.*(a + i) — это сама i-я строка.

iv.

*(a + i) + i — это указатель на i-й элемент i-й строки.

 

 

v.

Разыменование дает a[i][i] — элемент на главной диагонали (слева сверху вниз

 

вправо):

a[0][0]

=

1

 

a[1][1]

=

 

5

 

a[2][2] = 9

 

 

 

Вывод на экран:

Для каждой итерации выводятся три элемента через символ _. Давайте рассмотрим:

1.Для i = 0:

a.a[0][2 - 0] = a[0][2] = 3

b.*a[0] = a[0][0] = 1

c.*(*(a + 0) + 0) = a[0][0] = 1

Вывод: 3_1_1_

2.Для i = 1:

a.a[1][2 - 1] = a[1][1] = 5

b.*a[1] = a[1][0] = 4

c.*(*(a + 1) + 1) = a[1][1] = 5

Вывод: 5_4_5_

3.Для i = 2:

a.a[2][2 - 2] = a[2][0] = 7

b.*a[2] = a[2][0] = 7

c.*(*(a + 2) + 2) = a[2][2] = 9

Вывод: 7_7_9_

Полный вывод программы:

3_1_1_5_4_5_7_7_9_

Основные моменты:

1.a[i][2 - i] — элементы на вторичной диагонали.

2.*a[i] — первые элементы каждой строки.

3.*(*(a + i) + i) — элементы на главной диагонали.

Ответ 3_1_1_5_4_5_7_7_9_

15.

#include <iostream> using namespace std; int main() {

long f[6] = { 6,5,4,3,2,1 };

cout << (f[f[f[3]]] - f[f[2] - f[4]]);

}

Ответ: -1

16.

#include <iostream> using namespace std; void main() {

int y,z,x = 3; y = z = 4;

cout << (z >= y && y >= x) << "\n";

}

Ответ: 1

17.

#include <iostream> using namespace std; const int N = 10;

unsigned SerchALL(float z, float A[N])

{

unsigned i, res = 0; for (i = 0; i < N; i++)

if (A[i] == z) res++; return res;

}

Ответ:N; z; res; res.

18.

#include <iostream> using namespace std; void main()

{

int x;

x = 3 + 4 % 5 - 6;