Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборник тестовых вопросов и задач по языку программирования Си. В 2 частях. Ч. 1. Практикум
.pdf
71
28. Напишите имя переменной, имеющей наибольшую область види-
мости в следующем коде:
#include <stdio.h>
int x;
int main()
{
int y;
return 0;
}
int z;
• z.
29. Для переменных какого типа допускается использовать класс
хранения register?
• локальные. Класс хранения register используется для определения ло-
кальных переменных.
30. Установите соответствие между названием класса хранения пере-
менных и начальными значениями переменных данного класса:
• static, extern — 0;
• auto, register — машинное состояние.

72
ТЕМА 7. МАССИВЫ
1. Установите соответствие между инициализацией массива и ее сло-
весным описанием:
int mas2[10] = {5, 3, 10, 20}
Явное указание размерности массива
и последовательное перечисление значений
его элементов
float mas[] = {5.5, 3.4, 10.0, 20.2, 34.7,
46.8, 15.3}
Явное последовательное перечисление
значений элементов массива без указания
его размерности
float mas[7] = {5.5, 3.4, 10.0, 20.2, 34.7,
46.8, 15.3}
Явное задание значений отдельных
элементов массива
2. Какие из нижеследующих описаний массива соответствуют синтак-
сису языка Си?
• int a[3]={1,2,3,4};
• int a [3]={1,2};
• int a[3]={1,2,3};
• int a[ ]={1,2,3};
3. Описан массив c именем MASS. Какое из следующих утверждений
является верным?
• MASS [0] — обращение к первому элементу массива;
• MASS [1] — обращение к первому элементу массива.
4. Какие из нижеследующих описаний массива соответствует синтак-
сису языка Си?
• int a[ ]={1,2,3,4};
• int a[5]={1,2,3,4};
• const int n=3; int a[n]={1,2,3,4};
• const int n=5; int a[n]={1,2,3,4};
5. Какое из определений массива корректно? Массив — это…
• именованная последовательность элементов, имеющих в общем случае
разный тип и расположенных в памяти компьютера последовательно;
• именованная последовательность однотипных элементов, расположенных
в памяти компьютера последовательно;
• последовательность элементов с уникальными именами, имеющих оди-
наковый тип;
• совокупность переменных.

73
6. Каждый член массива однозначно определяется именем массива
и присвоенным этому члену:
• диапазоном;
• граничным значением;
• индексом.
7. Что будет содержаться в элементах массива с классом памяти auto
при его объявлении без инициализации?
• значения, определяемые программистом;
• нули;
• случайные значения, которые уже содержатся в ячейках памяти.
8. С каким классом памяти массивы автоматически инициализиру-
ются нулями?
• auto;
• static;
• extern.
9. Какими способами может быть реализована пересылка элементов
одного массива в другой?
• поэлементно, с помощью нескольких операторов присваивания (их число
равно числу элементов массива);
• с помощью одного оператора присваивания;
• поэлементно, с помощью цикла.
10. Какие способы инициализации массива являются правильными?
• register int arr[ ][ ]={{1,2},{5,0},{4,9}}
• int arr[ ][ ]={{1,2},{5.0},{4,9}}
• int arr[3][2]={{1,2},{5,0},{4,9}}
• static int arr[3][2]= {{1,2},{5,0},{4,9}}
11. Какие значения примут переменные I, j, k в результате выполне-
ния следующего кода?
#include<stdio.h>
int main()
{

74
int arr[5] = {2, 1, 12, 15, 17};
int i=++arr[1], j=arr[1]++, k=arr[i++];
printf("\n\ti = %d, j = %d, k = %d", i, j, k);
return 0;
}
• 3, 2, 12;
• 3, 4, 12;
• 2, 3, 15.
12. Пусть объявлен одномерный массив arr коротких целых (short int)
размерностью 30. Массив размещен в памяти по адресу 4 020. По какому
адресу будет размещен элемент arr[15]?
13. Какое значение примет элемент массива arr[2,3]?
#include <stdio.h>
int main()
{
int arr[3][2] = {5, 4, 3, 2, 1};
for (int i = 0; i < 3; i++)
for (int j = 0; j < 2; j++)
printf("\n\t a[2][3] = %d", arr[i][j]);
}
14. Сколько ненулевых элементов будет выведено при выполнении
следующего кода?
#include<stdio.h>
int main()
{
int i;
int arr[7] = {1, 2};
for (i = 0; i < 7; i++)
printf("\t\narr[i] = %d ", arr[i]);
return 0;
}

75
15. Пусть объявлен массив arr из 10 элементов. Какая строка кода
осуществляет доступ к 7 элементу массива?
• arr[6];
• arr[7];
• arr(8);
• arr;
16. Пусть объявлен массив arr из 35 элементов. Каким должен быть
индекс для доступа к последнему элементу массива arr?
17. Пусть объявлен целочисленный массив arr. Укажите строку кода,
которая определяет то же значение, что и &arr[i]:
• &arr[i-1] + sizeof (int);
• arr + sizeof (int) * i;
• arr+i;
18. При каких перечисленных типах результата выражений они могут
являться индексами массива?
• int;
• float;
• short int;
• char.
19. Путь объявлен целочисленный массив arr: int arr [10] = {3, 3, 3};.
Укажите правильные высказывания:
• arr[9] — последний элемент массива arr;
• значение arr[8] равно 0;
• значение arr[3] равно 3.
20. Какой объем памяти будет выделен массиву arr, который объявлен
следующим образом: сhar arr [30];?
21. Пусть объявлен массив int arr[2] [4] = {1, 2, 3, 4, 5, 6, 7, 8};. Какой
оператор осуществляет доступ к элементу массива со значением 4?
• arr[0][3];
• arr[0][4];
• arr[1][1].

76
22. Какие границы для размерностей должны быть заданы при объ-
явлении двумерного массива?
• границы обеих размерностей;
• обязательна только граница первой размерности;
• обязательна только граница второй размерности;
• не требуется указывать границы размерности.
23. Укажите правильные высказывания:
• элемент массива сам по себе может быть массивом;
• элементы массива обязательно должны занимать смежные области памяти;
• в Си допускается индексация элементов за пределами границ размерности
массива.
24. Пусть arr — это двумерный массив из 7 строк и 9 столбцов. На ка-
кую строку массива указывает arr[3] ?
• 3 ряд;
• 4 ряд;
• 3 столбец;
• 4 столбец.
25. Каково логически обоснованное максимальное количество элемен-
тов в объявленном массиве int arr[4][7]?
26. Как разрешается противоречие, при котором явно объявленный
размер массива меньше, чем количество элементов в списке инициал изи-
рующих элементов?
• лишние значения игнорируются;
• генерируется сообщение об ошибке;
• размер массива увеличивается;
• размер массива игнорируется при задании значений.
27. Какие способы инициализации массива являются правильными?
• int arr{5} = { 5, 7, 10 };
• int arr[5] = { 5, 7, 10, 15, 25};
• int arr[] = { 5, 7, 10, 15, 25 };
• int arr(5) = { 5, 7, 10, 15, 25 };

77
28. Что произойдет, если в программе на языке Си присвоить значе-
ние элементу массива, подстрочный индекс которого превышает размер
массива?
• элемент массива будет установлен в 0;
• компилятор сообщит об ошибке;
• программа может аварийно завершить работу, если некоторые важные
данные будут перезаписаны;
• размер массива будет соответствующим образом увеличиваться.
29. Какие классы хранения могут использоваться для массива, если
они явно не определены при инициализации массива?
• register;
• auto;
• static;
• external.
30. Какие из следующих высказываний являются верными?
• в определении массива индексом может быть любое выражение, дающее
ненулевое целочисленное значение;
• все элементы массива должны иметь одинаковый тип данных и класс
хранения;
• количество индексов определяет размерность массива;
• элементы массива не обязательно должны быть одного класса хранения.
ОТВЕТЫ К ВОПРОСАМ И ЗАДАЧАМ ТЕМЫ 7
1. Установите соответствие между инициализацией массива и ее сло-
весным описанием:
• int mas2[10]= {5, 3, 10, 20} — явное задание значений отдельных эле-
ментов массива;
• float mas[] = {5.5, 3.4, 10.0, 20.2, 34.7, 46.8, 15.3} — явное последова-
тельное перечисление значений элементов массива без указания его размерности;
• float mas[7] = {5.5, 3.4, 10.0, 20.2, 34.7, 46.8, 15.3} — явное указание раз-
мерности массива и последовательное перечисление значений его элементов.

78
2. Какие из нижеследующих описаний массива соответствуют синтак-
сису языка Си?
• int a [3]={1,2};
• int a[3]={1,2,3};
• int a[ ]={1,2,3};
3. Описан массив c именем MASS. Какое из следующих утверждений
является верным?
• MASS [0] — обращение к первому элементу массива.
4. Какие из нижеследующих описаний массива соответствует синтак-
сису языка Си?
• int a[ ]={1,2,3,4};
• int a[5]={1,2,3,4};
• const int n=5; int a[n]={1,2,3,4};
5. Какое из определений массива корректно? Массив — это…
• именованная последовательность однотипных элементов, расположенных
в памяти компьютера последовательно.
6. Каждый член массива однозначно определяется именем массива
и присвоенным этому члену:
• индексом.
7. Что будет содержаться в элементах массива с классом памяти auto
при его объявлении без инициализации?
• случайные значения, которые уже содержатся в ячейках памяти.
8. С каким классом памяти массивы автоматически инициализируются
нулями?
• extern.
9. Какими способами может быть реализована пересылка элементов
одного массива в другой?
• поэлементно, с помощью нескольких операторов присваивания (их число
равно числу элементов массива); поэлементно, с помощью цикла.

79
10. Какие способы инициализации массива являются правильными?
• int arr[3][2]={{1,2},{5,0},{4,9}};
• static int arr[3][2]= {{1,2},{5,0},{4,9}}
11. Какие значения примут переменные I, j, k в результате выполнения
следующего кода?
• 3, 2, 12.
Переменная arr объявляется как целочисленный массив размерности 5
и инициализируется как arr[0] = 2, arr[1] = 1, arr[2] = 12, arr[3] = 15, arr[4] = 17.
Переменные i, j, k объявляются как целые и им соответственно присваиваются
значения i = ++arr[1]; j = arr[1]++; k = a[i++].
Порядок действий при вычислении i, j, k следующий:
• i = ++arr[1], приращение выполняется перед присваиванием, i=arr[1]+1=2;
• j = a[1]++; приращение выполняется после присваивания, j = 2++; j = 3;
• k = a[i++]; приращение выполняется после присваивания, k = a[2] = 12;
i=i+1= 2+1=3.
Следовательно, переменным i, j, k присваиваются значения 3, 2, 12 соответственно.
12. Пусть объявлен одномерный массив arr коротких целых (short int)
размерностью 30. Массив размещен в памяти по адресу 4 020. По какому
адресу будет размещен элемент arr[15]?
• 4 050.
По адресу 4 020 размещен элемент arr[0]. Длина типа данных short int составляет два байта. Следовательно, элемент arr[1] размещен в памяти со смещением 2, т.е. его адрес равен 4 022. Для любого элемента массива адрес его
размещения в памяти вычисляется следующим образом: начальный адрес мас-
сива + количество предшествующих элементов массива × длина элемента массива. Таким образом, arr[15] размещен по адресу 4 020 + 15 × 2 = 4 050.
13. Какое значение примет элемент массива arr[2,3]?
• 0.
Если при явном задании значений элементов массива количество перечисленных элементов массива меньше заявленной размерности массива, то осталь-
ные элементы считаются нулями.

80
14. Сколько ненулевых элементов будет выведено при выполнении
следующего кода?
• 2.
Если при явном задании значений элементов массива количество перечис-
ленных элементов массива меньше заявленной размерности массива, то остальные элементы считаются нулями.
15. Пусть объявлен массив arr из 10 элементов. Какая строка кода
осуществляет доступ к 7 элементу массива?
• arr[6].
Индексация массива в Си начинается с 0.
16. Пусть объявлен массив arr из 35 элементов. Каким должен быть
индекс для доступа к последнему элементу массива arr?
• 34.
Индексация массива в Си начинается с 0.
17. Пусть объявлен целочисленный массив arr. Укажите строку кода,
которая определяет то же значение, что и &arr[i]:
• &arr[i-1] + sizeof (int);
&arr[i-1] + sizeof(int) означает адрес (i – 1)-го элемента плюс размер эле-
мента, в результате получается адрес i-го элемента.
18. При каких перечисленных типах результата выражений они могут
являться индексами массива?
• int, short int, char. Индексом может быть любое выражение, имеющее
результат целого типа: int, short, long, char.
19. Путь объявлен целочисленный массив arr: int arr [10] = {3, 3, 3};.
Укажите правильные высказывания:
• arr [9] — последний элемент массива arr: индексация массива в Си начи-
нается с 0; значение arr[8] равно 0: если при явном задании значений элементов
массива количество перечисленных элементов массива меньше заявленной раз-
мерности массива, то остальные элементы считаются нулями.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
