Варіант №2
1. 1, 3, 4, 7.
2. 2 - int, 3 - double, 46 - int.
3. -3, long.
4. #define Diff (a, b) ((a)-(b)) .
5. p - це покажчик на покажчик на масив, який має 10 значень типу int.
6. int *(*a[5][10])(int x)
7. Операції відношення порівнюють між собою два значення. До операцій відношення належать операції :
> - більше;
< - менше;
== - рівне;
!= - не рівне;
>= - більше рівне;
<= - менше рівне.
Результатом порівняння є значення істини (не 0) або не істини (0).
8. int sum = 0;
for (i = 0; i < 30; i++)
{
if (a[i] < 0)
{
sum += a[i];
}
}
9.
#include <stdio.h>
int main ( )
{
int i, j, n = 20;
int a[n][n];
int min = a[0][0];
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf ("%d", & a[i][j]);
}
}
for (i = 1; i < n ; i++)
{
for (j = 0; j < i; j++)
{
if (a[i][j] < min)
{
min = a[i][j];
}
}
}
printf("%d", min);
return 0;
}
Варіант №3
1. 2, 3, 6, 7.
2. 1 - double, 2 - int, 5 - unsigned int
3. 9, long.
4. #define Mul(a, b) ((a)*(b))
5. p - це масив з 10 покажчиків на покажчик типу int.
6. double (**a[15][10])()
7. Операції адресації тісно пов'язані з поняттям покажчика. Покажчик - це змінна, яка призначена для збереження адреси об'єкта деякого типу. Синтаксис : [<специфікація типу>] *<описувач>; . Специфікація типу задає тип змінної, на яку посилається покажчик, а символ '*' визначає саму змінну як покажчик. Приклад застосування покажчика : дамо покажчику ім'я p, то можемо записати вираз
p = &abc; // присвоєння адреси abc змінній p
де &abc - константа типу покажчик, адреса змінної abc, а p - змінна типу покажчик. В такому випадку p вказує на abc. Якщо в змінній p міститься посилання на змінну abc, тоді для доступу до значення цієї змінної можна скористатися операціїє "непрямої адресації":
val = *p; // визначення значення на яке вказує p
Отже, останні два оператори стають еквівалентні виразу
val = abc;
8. int kol = 0;
for (i = 0; i < 20; i++)
{
if (a[i] == 0)
kol++;
}
9.
#include <stdio.h>
int main (void)
{
int i, j, n = 10;
int a[n][n];
int min = a[0][0];
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf ("%d", & a[i][j]);
}
}
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (a[i][j] < min)
{
min = a[i][j];
}
}
}
printf("%d", min);
return 0;
}
Варіант №8
1. 1, 3, 4, 6.
2. 1 - int, 3 - char, 6 - double
3. 5, long.
4. #define Mul(a, b, c) ((a)*(b)*(c))
5. Покажчик на масив з 10 масивів, кожен з яких має 20 значень типу double.
6. int (**(*)[5])()
7 Порозрядні операції виконуються тільки над операндами цілих типів. До них належать:
~ (інверсія);
<< (зсув вліво)
>> (зсув вправо);
& (порозрядне І);
^ (побітове АБО з виключенням);
| (порозрядне АБО).
Використання порозрядних операцій дає змогу оперувати окремими бітами даних, перевіряти або змінювати їх значення. Порозрядні операції виконуються окремо над кожною парою бітів, що записані в однакових за номером розрядах двох операндів, які вступають в порозрядну операцію. Результат порозрядного І буде нульовим, якщо хоча б один з бітів 0. Якщо обидва біти рівні 1, то результат дорівнює не нуль. Результат побітового АБО з виключенням буде нульовим, якщо обидва біта будуть рівні, у всіх інших випадках результат дорівнює не нуль. Результат порозрядного АБО буде нульовим, якщо обидва біта будуть рівні 0, у всіх інших випадках результат дорівнює не нулю.
8. double prod = 1;
for (i = 0; i < 10; i++)
{
if (a[i] != 0)
prod *= a[i];
}
9.
#include <stdio.h>
int main (void)
{
int i, j, n = 30;
int a[n][n];
int max = a[0][0];
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf ("%d", & a[i][j]);
}
}
for (i = 1; i < n; i++)
{
for (j = n - 1; j < n; j++)
{
if (a[i][j] > max)
{
max = a[i][j];
}
}
}
printf("%d", max);
return 0;
}
Варіант №10
1. 2, 3, 6, 8.
2. 3 – double, ...