Главная / Программирование /
Структуры и алгоритмы компьютерной обработки данных / Тест 18
Структуры и алгоритмы компьютерной обработки данных - тест 18
Упражнение 1:
Номер 1
Какой тип данных нельзя использовать в качестве типа элемента структуры?
Ответ:
 (1) массив 
 (2) функция 
 (3) указатель на структуру 
 (4) тип перечисления 
Номер 2
Какой тип данных можно использовать в качестве типа элемента структуры?
Ответ:
 (1) строка 
 (2) указатель на объявляемую структуру 
 (3) объявляемая структура 
 (4) массив указателей 
Номер 3
Какой тип данных нельзя использовать в качестве типа элемента структуры?
Ответ:
 (1) файл 
 (2) объединение 
 (3) указатель на объединение 
 (4) указатель на указатель 
Упражнение 2:
Номер 1
Определите размер структуры, которая объявлена следующим образом:
struct Book {
int num[5];
char titl[30];
char x;
};
Ответ:
 (1) 36 
 (2) 40 
 (3) 51 
 (4) 52 
Номер 2
Определите размер объединения, которое объявлено следующим образом:
union Book {
int num[5];
char titl[30];
char x;
};
Ответ:
 (1) 36 
 (2) 32 
 (3) 30 
 (4) 52 
Номер 3
Определите размер структуры, которая объявлена следующим образом:
struct Book {
int number;
union {
char titl[30];
char x;
} info;
};
Ответ:
 (1) 50 
 (2) 36 
 (3) 32 
 (4) 30 
Упражнение 3:
Номер 1
Объявлена структура mail
. Укажите верные для этой структуры присваивания
struct mail {
int id;
union {
struct {
char name[30];
char dept[10];
char location[3];
} active;
struct {
char name[30];
char street[20];
char city_state[3];
char zip[5];
} retired;
} info;
} preson;
Ответ:
 (1) mail={1,'Petrov','Ufa','RUS'};
 
 (2) preson.id=23;
 
 (3) preson.info.active.name='Petrov';
 
 (4) info.active.name='Petrov';
 
 (5) active.name='Petrov';
 
Номер 2
Объявлена структура mail
. Укажите верные для этой структуры присваивания
struct mail {
int id;
union {
struct {
char name[30];
char dept[10];
char location[3];
} active;
struct {
char name[30];
char street[20];
char city_state[3];
char zip[5];
} retired;
} info;
} preson;
Ответ:
 (1) struct.preson={1,"Petrov","Ufa","RUS"};
 
 (2) preson.id="23";
 
 (3) preson.info.retired.name="Petrov";
 
 (4) preson.retired.name="Petrov";
 
 (5) preson.name="Petrov";
 
Номер 3
Объявлена структура mail
. Укажите верные для этой структуры присваивания
struct mail {
int id;
union {
struct {
char name[30];
char dept[10];
char location[3];
} active;
struct {
char name[30];
char street[20];
char city_state[3];
char zip[5];
} retired;
} info;
} preson;
Ответ:
 (1) mail.preson={1,"Petrov","Ufa","RUS"};
 
 (2) preson.info.active.dept="Center";
 
 (3) preson.info.active={"Petrov","Ufa","RUS"};
 
 (4) dept.active.info.preson="Center";
 
 (5) name="Petrov";
 
Упражнение 4:
Номер 1
Укажите доступ к элементу структуры, эквивалентный обращению (*man).name:
Ответ:
 (1) man<-name
 
 (2) *man.name
 
 (3) man->name
 
 (4) *(man.name)
 
Номер 2
Укажите доступ к элементу структуры, эквивалентный обращению (*child).book[1]
:
Ответ:
 (1) child->book[]
 
 (2) child->book[1]
 
 (3) *(child.book[1])
 
 (4) child.book
 
Номер 3
Укажите доступ к элементу структуры, эквивалентный обращению woman->name
:
Ответ:
 (1) name<-woman
 
 (2) *woman.name
 
 (3) *(woman.name)
 
 (4) (*woman).name
 
Упражнение 5:
Номер 1
Прототип функции объявлен так: struct Student f (char Name[30]);
Данная функция:
Ответ:
 (1) возвращает структуру как результат 
 (2) возвращает указатель на структуру как результат 
 (3) передает структуру как параметр 
 (4) передает указатель на объект структурного типа как параметр 
Номер 2
Прототип функции объявлен так: struct Student *f (char Name[30]);
Данная функция:
Ответ:
 (1) возвращает структуру как результат 
 (2) возвращает указатель на структуру как результат 
 (3) передает структуру как параметр 
 (4) передает указатель на объект структурного типа как параметр 
Номер 3
Прототип функции объявлен так: void STU (struct Student *pst);
Данная функция:
Ответ:
 (1) возвращает структуру как результат 
 (2) возвращает указатель на структуру как результат 
 (3) передает структуру как параметр 
 (4) передает указатель на объект структурного типа как параметр 
Упражнение 6:
Номер 1
Объявлено объединение с битовыми полями и выполнено присваивание cod.n=12
. Укажите значение поля a3
union {
unsigned n;
struct {
unsigned a0 : 1;
unsigned a1 : 1;
unsigned a2 : 1;
unsigned a3 : 1;
unsigned a4 : 1;
unsigned a5 : 1;
unsigned a6 : 1;
unsigned a7 : 1;
} byte;
} cod;
Ответ:
 (1) 0 
 (2) 1 
 (3) 12 
 (4) 21 
Номер 2
Объявлено объединение с битовыми полями и выполнено присваивание cod.n=18
. Укажите значение поля a2
union {
unsigned n;
struct {
unsigned a0 : 1;
unsigned a1 : 1;
unsigned a2 : 1;
unsigned a3 : 1;
unsigned a4 : 1;
unsigned a5 : 1;
unsigned a6 : 1;
unsigned a7 : 1;
} byte;
} cod;
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 18 
Номер 3
Объявлено объединение с битовыми полями и выполнено присваивание cod.n=14
. Укажите значение поля a1
union {
unsigned n;
struct {
unsigned a0 : 1;
unsigned a1 : 1;
unsigned a2 : 1;
unsigned a3 : 1;
unsigned a4 : 1;
unsigned a5 : 1;
unsigned a6 : 1;
unsigned a7 : 1;
} byte;
} cod;
Ответ:
 (1) 0 
 (2) 1 
 (3) 8 
 (4) 14 
Упражнение 7:
Номер 1
К битовым полям нельзя применять следующие действия:
Ответ:
 (1) объявлять массивы битовых полей 
 (2) обращаться через указатель: (*УказательНаСтруктуру).ИмяПоля
 
 (3) объявлять битовые поля вне структур 
 (4) выполнять присваивания значений битовым полям 
Номер 2
К битовым полям можно применять следующие действия:
Ответ:
 (1) адресовать битовые поля 
 (2) объявлять битовые поля вне объединений 
 (3) обращаться через ссылку: УказательНаСтруктуру -> ИмяПоля
 
 (4) выполнять арифметические операции над битовыми полями 
Номер 3
Какие действия не допустимы над битовыми полями?
Ответ:
 (1) объявлять массивы битовых полей 
 (2) обращаться через указатель: (*УказательНаСтруктуру).ИмяПоля 
 (3) объявлять битовые поля вне структур 
 (4) выполнять присваивания значений битовым полям 
Упражнение 8:
Номер 1
При объявлении
union {
unsigned a0 : 3;
unsigned a1 : 1;
unsigned a2 : 2;
} byte;
битовые поля располагаются в памяти:
Ответ:
 (1) все в разных байтах 
 (2) поля перекрывают друг друга 
 (3) все поля располагаются в одном байте и имеют общее начало 
 (4) последовательно бит за битом 
Номер 2
При объявлении
struct {
unsigned a0 : 3;
unsigned a1 : 1;
unsigned a2 : 3;
} byte;
битовые поля располагаются в памяти:
Ответ:
 (1) все с разными адресами 
 (2) в одном байте, в порядке, определяемом реализацией 
 (3) как массив битовых полей 
 (4) как указатели на битовые поля 
Номер 3
При объявлении
union {
unsigned a0 : 3;
unsigned a1 : 1;
unsigned a2 : 2;
} byte;
битовые поля располагаются в памяти:
Ответ:
 (1) все в разных байтах 
 (2) поля перекрывают друг друга 
 (3) все поля располагаются в одном байте и имеют общее начало 
 (4) последовательно бит за битом