CИ
Укажите функцию, которая является точкой входа в любую программу на языке С:
main ()
Укажите ключевые слова языка C:
printf struct
Укажите фрагменты кода, в которых осуществляется инициализация строки str:
char *str = "Hi ho"; char str[] = "Hi ho"; char str[] = {'H', 'i', ' ', 'h', 'o', '\0'};
Укажите объявление массива из указателей на символы:
char *t[7];
Укажите код, содержащий ошибку:
char v[9]; v = "a string";
Для возврата значения функции в точку вызова используется оператор:
return
Укажите управляющую последовательность, используемую для перевода на новую строку:
\n
Перечислите допустимые идентификаторы переменных в С:
_return Return
Укажите значения переменных после выполнения следующего фрагмента кода: int a = 10, b = 3, c = 5; a -= (b = 2 - c++) + 1;
a = 12, b = -3, c = 6
Укажите значения переменных после выполнения следующего фрагмента кода: int a = 10, b = 3, c = 5; a = --b % c++;
a = 2, b = 2, c = 6
Укажите значения переменных после выполнения следующего фрагмента кода: int a = 10, b = 3, c = 5; a += b += c *= b;
a = 28, b = 18, c = 15
Укажите значение переменных после выполнения следующего фрагмента кода: int a = 10, b = 3, c = 5; a = b++ == 3 ? --c : b - c;
a = 4, b = 4, c = 4
Даны числа в десятичной системе a = 5 и b = 7. Укажите значения a и b после вычисления следующего выражения: a ^= b ^= a ^= b.
a = 7, b = 5
Укажите код, которым можно заменить постфиксный инкремент в строке 1: int a = 1; int b = 2; int *array[] = {&a, &b}; int **pp = array; (*++pp)++; /* 1 */
array[1] += 1;
Если задан двумерный массив int b[3][2]; то обращаться к адресу нулевого элемента i-ой строки можно следующими способами:
b[i] *(b+i)
Укажите ключевые слова, используемые для задания целых типов данных:
char int
Укажите бесконечные циклы:
while (1) {...} for ( ; ; );
Укажите допустимые литералы:
"1" 0x1 01
Укажите верные записи режима открытия тестового файла для добавления информации в конец файла:
"a+" "a+t"
Строковой константой является
"flags"
Укажите правильное определение макроса-функции, который определяет наименьшее из двух значений:
#define Min(x, y) x < y ? x : y
Укажите правильное задание макроса, который создает именованную константу со значением 25:
#define X 25
Укажите верные случаи использования директивы #include:
#include <stdio.h> #include "mylibrary.h"
Укажите операции, которые могут быть как унарными, так и бинарными:
& +
Укажите символ, который является признаком конца строки при определении строкового типа данных:
'\0'
Какой из приведенных символов функция gets () заменяет символом конца строки?
'\n'
Укажите значение переменной c2 после выполнения следующего фрагмента кода: сhar c1[] = "abcd"; char *p = c1; char c2 = *p;
'a'
Укажите все символьные константы:
'a' '\t' '\0'
Если задан двумерный массив int b[3][2]; то обращаться к адресу элемента b[i][j] можно следующими способами:
*(b+i)+j b[i]+j
Укажите оператор языка C, который представляет собой оператор последовательного вычисления:
, (запятая)
Укажите, какое значение будет выведено на экран в результате выполнения следующего фрагмента кода: struct { int a:1; } value; value.a = 1; printf ("%d", value.a);
-1
Укажите значение переменной a, описанной как static int a;
0
Укажите результат выполнения следующего фрагмента кода: int x = 0; for (int i = 0; i < 4; ++i) { switch (i) { case 0: printf ("0"); case 1: printf ("1"); continue; case 2: printf ("2"); break; default: printf ("M"); break; } printf (".") }
0112.M.
Укажите строчки кода, в которых содержатся ошибки: #include <stdio.h> #define printf (s) puts (s) void test() { printf ("%s", "A"); /* 1 */ printf ("B"); /* 2 */ puts ("C"); /* 3 */ }
1
Укажите строки, в которых содержатся ошибки: /*1*/ const char *s1 = "foo" + "bar"; /*2*/ char s2[] = "foo" "bar"; /*3*/ static const char *s3 = "foo" "bar"; /*4*/ char *s4 = "foo" - "bar"; /*5*/ char s5 = "foo"[3];
1 4
Укажите строчки кода, в которых содержатся ошибки: struct A { char a[]; /*1*/ }; struct B { char a; char b[]; /*2*/ }; struct C { char a[]; /*3*/ char b; }; int main () { char a[]; /*4*/ return 0; } void test (char a[]) /*5*/ { }
1 4 3
Укажите значения **ptr и **(ptr + 1) в следующем случае: int (*ptr)[2], fort[2][2] = { {12}, {14, 16} }; ptr = fort;
12, 14
Укажите значения *ptr и *(ptr + 2) в следующем случае: int *ptr, forr[2][2] = { {12}, {14, 16} }; ptr = forr[0];
12, 14
Укажите значения **ptr и **(ptr + 1) в следующем случае: int (*ptr)[2], torf[2][2] = {12, 14, 16}; ptr = torf;
12, 16
Укажите значения *ptr и *(ptr + 2) в следующем случае: int *ptr, torf[2][2] = {12, 14, 16}; ptr = torf[0];
12, 16
Укажите строки, в которых содержатся ошибки: const int * * a; a = 0; / * 1 * / * a = 1; / * 2 * / * * a = 2; / * 3 * /
2 3
Укажите строки, в которых содержатся ошибки: void Test (const int **a) { / * 1 */ a = 0; / * 2 * / * a = 0; / * 3 * / * * a = 0; }
3
Укажите результат выполнения фрагмента кода: int a; double b = 2; a = 2 * (b * 5 / 2) / (5 / 2); printf ("%d", a);
5
Укажите значение переменной result после выполнения следующего фрагмента кода: int array[10]; int *a = array; int *b = &array[9]; int result = b - a;
9
Укажите верные утверждения относительно вектора A:
A + i является адресом элемента A[i] A является указателем на нулевой элемент вектора A *(A + j) является значением j-го элемента вектора A
Укажите верные утверждения относительно двумерного массива A:
A является указателем на нулевую строку массива A *(A + i) + j является адресом элемента A[i][j] A + i является указателем на i-ю строку массива A
Укажите правильные способы обращения к i-му элементу одномерного массива A:
A[i] *(A + i)
Укажите правильные способы обращения к элементу с индексами i, j двумерного массива A:
A[i][j] *(A[i] + j) * ( * (A + i) + j)
Укажите оператор, с помощью которого можно найти остаток от деления на 4:
d = a & 0x03;
Укажите класс памяти, который создает переменные, которые можно использовать в нескольких файлах:
extern
Укажите функции, которые позволяют получить текущее положение указателя файла:
fgetpos () ftell ()
Укажите функцию, которая считывает не более 20 элементов типа char из стандартного потока ввода в строку str, описанную как char str[20];
fgets (str, 20, stdin)
Укажите фрагмент кода, в котором осуществляется выделение памяти под 10 элементов типа float:
float * p = (float * ) calloc (10, sizeof (float));
Укажите объявление функции, возвращающей указатель на вещественное значение:
float *g ()
Укажите код, не содержащий ошибок:
float a; scanf ("%f", &a);
Укажите корректные объявления двумерного массива:
float a[][2] = { {1, 2}, {2, 4}, {5, 6} }; int c[2][3];
Укажите функцию, которая позволяет очистить все буферы, связанные с открытыми потоками:
flushall ()
Укажите код, вычисляющий значение 5!
for (int i = 1, n = 1; i <= 5; i++) n *= i;
Укажите функцию, которая осуществляет чтение массива array, состоящего из 10 элементов типа float, из поток f:
fread (array, sizeof (float), 10, f)
Укажите функции форматированного ввода/вывода из потока:
fscanf (), fprintf ();
Прототип функции имеет следующий вид: void function (int *array); Как правильно передать в эту функцию массив, описанный как int a[25];
function (a)
Укажите функцию, которая осуществляет запись массива array, состоящего из 10 элементов типа float, в поток f:
fwrite (array, sizeof (float), 10, f)
Укажите функции, которые возвращают код очередного символа из стандартного потока ввода:
getc (stdin) getchar () fgetc (stdin)
Укажите функцию, которую можно использовать для ввода строки text = "Be the best that you can bе":
gets (text);
Укажите ключевые слова, которые входят в конструкцию оператора условного перехода:
if else
Укажите оператор условного перехода, записанный в полной форме:
if (x < 3) y = 10 * x; else y = -6 * x;
Укажите объявление указателя на функцию:
int (*g) ();
Укажите объявление переменной a, являющейся указателем на константный указатель типа int:
int * const * a;
Укажите описание указателя-константы на переменную целого типа:
int * const p = 0x0012ff48;
Укажите корректные объявления одномерного массива:
int b[30]; int a[] ={2, 5};
Укажите фрагмент кода, в котором осуществляется выделение памяти размером 100 байт:
int * p = (int * ) malloc (100);
Укажите прототип функции, которая принимает два аргумента типа int и возвращает адрес значения наибольшего из этих аргументов:
int *function (int, int);
Укажите правильные варианты использования функции printf ():
int a = 8; printf ("%6d", a); int a = 8; printf ("%d", a);
Укажите код, в котором в каждой строке матрицы a меняются местами максимальный и первый элементы строки:
int a[3][3] = { {1, 3, 5}, {-2, 6, -7}, {3, 9, -2} }; int i, j, n = 3, max, j_max, r; for (i = 0; i < n; i++) { max = a[i][0]; j_max = 0; for (j = 0; j < n; j++) if (a[i][j] > max) { max = a[i][j]; j_max = j; } r = a[i][0]; a[i][j_max] = r; a[i][0] = max; }
Укажите код, в котором в каждом столбце матрицы меняются местами максимальный и минимальный элементы столбца:
int a[3][3] = { {1, 3, 5}, {-2, 6, -7}, {3, 9, -2} }; int i, j, n = 3, max, min, i_max, i_min, r; for (i = 0; i < n; i++) { max = a[0][i]; i_max = 0; min = a[0][i]; i_min = 0; for (j = 0; j < n; j++) { if (a[j][i] > max) { max = a[j][i]; i_max = j; } if (a[j][i] < min) { min = a[j][i]; i_min = j; } } r = a[i_max][i]; a[i_max][i] = a[i_min][i]; a[i_min][i] = r; }
Укажите код, в котором по исходной матрице a строится вектор b, состоящий из минимальных элементов столбцов матрицы a:
int a[3][3] = { {1, 3, 5}, {-2, 6, -7}, {3, 9, -2} }; int i, j, n = 3, min, b[3]; for (i = 0; i < n; i++) { min = a[0][i]; for (j = 0; j < n; j++) if (a[j][i] < min) min = a[j][i]; b[i] = min; }
Укажите код для нахождения суммы элементов, расположенных выше главной диагонали, которые при делении на 3 дают остаток 1:
int a[3][3] = { {1, 3, 5}, {-2, 6,- 7}, {3, 9, -2} }; int sum = 0, i, j, n = 3; for (i = 0; i < n; i++) for (j = i; j < n; j++) if (a[i][j] %3 == 1) sum += a[i][j];
Укажите код, в котором находится сумма положительных элементов на побочной диагонали матрицы:
int a[3][3] = { {1, 3, 5}, {2, 6, -7}, {3, 9, -2} }; int sum = 0, i, n = 3; for (i = 0; i < n; i++) if (a[i][n-i-1] > 0) sum += a[i][n-i-1];
Укажите код, в котором находится количество четных элементов вектора:
int a[5] = {1, 2, 4, 8, 7}, kol = 0, n = 5; for (int i = 0; i < n; i++) if (a[i] % 2 == 0) kol++;
Укажите код, в котором находится максимальный элемент вектора:
int a[5] = {4, 2, 6, 8, 7}, n = 5, max; max = a[0]; for (int i = 0; i < n; i++) if (a[i] > max) max = a[i];
Укажите прототип функции, которая принимает два аргумента - значение типа double и адрес переменной типа double и возвращает значение типа int:
int function (double, double *);
Укажите корректные конструкции:
int i = 0; while (i < 10) { i++; } while (i < 10); int i = 0; while (i < 10) { i++; } int i = 0; do { i++; } while (i < 10);
60 Укажите код, описывающий функцию нахождения минимального значения из двух элементов:
int min(int a, int b) { if (a < b) return a; else return b; }
Укажите фрагмент кода, в котором осуществляется перемещение текущей позиции указателя в файле, связанном с потоком f, на позицию off, начиная с начала файла:
int p = fseek (f, off, SEEK_SET);
Укажите прототип следующей функции: int sum (int a, int b) { return a + b; }
int sum (int, int);
Как в прототипе функции func () можно объявить параметр - одномерный целочисленный массив с именем x, чтобы следующий код скомпилировался? int main (void) { int i[10]; func (i); return 0; }
int x[10] int *x int x[]
Укажите объявления вещественных переменных:
long double b; float c; double h;
Укажите объявления переменных целого типа
long r; int i;
Укажите все функции, с помощью которых можно выделить память:
malloc () calloc ()
Укажите спецификатор типа, который использует функция printf () для вывода на экран значения указателя (адреса, который хранит данный указатель):
p
Укажите операции, которые допустимы для указателей p1 и p2, объявленных как int * p1, * p2;
p1 - p2 * p1 + p2 * p1 * * p2
Укажите функции, которые можно использовать для вывода строки text = "Let it snow!":
printf ("%s", text); puts (text);
Укажите классы памяти, которые создают переменные, существующие с момента их описания до конца блока, в котором они описаны:
register auto
Имеются следующие объявления: float rootbeer[10], value = 2.2; Укажите среди приведенных ниже операторов допустимые:
rootbeer[2] = value;
Укажите правильные варианты применения функции scanf() к массиву, описанному как double mint[10];
scanf ("%lf", &mint[2]);
Укажите описание короткого целого типа данных:
short int
Укажите правильные описания переменных
short int z=3; int y(1); float f(3.0); int z=3;
Укажите правильные обращения к элементу b переменной st, объявленной следующим образом: struct Structure { int a; float b; } *st;
st->b (*st).b
Укажите класс памяти, который создает переменные, сохраняющиеся на протяжении всего времени выполнения содержащей их программы:
static
Укажите функции библиотеки <string.h>, которые используются для копирования строк:
strcpy () strncpy ()
Укажите вызов функции strtok () для выделения второго и последующих слов в строке s (слова в s разделены пробелами):
strtok (NULL, " ");
Имеются следующие объявления: float root[10], things[10][5], *pf, value = 2.2; Укажите среди приведенных ниже операторов допустимые:
things[4][4] = root[3]; pf = root;
Укажите ключевое слово, используемое для объявления синонимов существующих типов данных:
typedef
Укажите типы следующих констант: 0XAA, 1066, 2.0e30
unsigned int, int, double
Какой тип указателя может указывать на любой тип данных?
void *p;
Выберите правильные объявления функции, у которой аргументом является массив, описанный как int Array[10][20];
void func (int argument[][20]); void func (int **argument);
Укажите описание, которое содержит ошибку при передачи двумерного массива в функцию:
void print_m (int mas[][], int dim1, int dim2);
Укажите код, с помощью которого можно циклически сдвинуть вправо на 1 позицию элементы вектора
x = A[n-1]; for (i = n - 1; i > 0; i--) A[i] = A[i-1]; A[0] = x;
Объекты объявлен как int *y; int a[10]; укажите, какие инструкции использовать нельзя:
y = &a; a++;
Выберите все правильные утверждения для следующих типов: /*1*/ const int * /*2*/ int const * /*3*/ int * const
второй тип идентичен первому первый тип означает указатель на константу типа int
Укажите результат выполнения следующего фрагмента кода: int x = 0; switch (x) { case 1: printf ("Один"); case 0: printf ("Нуль"); case 2: printf ("Два"); }
НульДва
В ASCII символ с кодом 0x43 представляет собой букву С английского алфавита. Укажите, что будет выведено на экран в результате выполнения следующего фрагмента кода: printf ("Программа на \0x43\n");
Программа на
Оператор break используется для:
завершения работы цикла
Укажите строчки кода, в которых содержатся ошибки:<>/p #include <stdio.h> int main() { if (0) /* 1 */ if (1) /* 2 */ for( ; ; ) /* 3 */ while (1); /* 4 */ else printf ("foo"); /* 5 */ else printf ("bar"); /* 6 */ return 0; }
ошибок нет
Оператор goto используется для:
перехода на оператор, помеченный меткой
Оператор continue используется для:
перехода на следующую итерацию цикла
Укажите способы передачи параметров в функцию в языке С:
по значению
Какую парадигму программирования представляет язык программирования C?
процедурное программирование
Укажите все верные утверждения относительно следующих перечислений: enum en1 {ELEM1_1, ELEM1_2, ELEM1_4}; enum en2 {ELEM2_1, ELEM2_2, ELEM2_3}; enum {ELEM3_1, ELEM3_2, ELEM3_4} en3; typedef enum {ELEM4_1 = 1, ELEM4_2, ELEM4_4} en4;
различие между en1 и en2 заключается только в их названиях и названиях их элементов ELEM4_2 = ELEM1_4 = ELEM2_3 = ELEM3_4
Укажите прототип функции, позволяющей присоединить к строке s1 строку s2:
сhar * strcat (char *s1, const char *s2);