

Экзамен по программированию.
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;