Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборник тестовых вопросов и задач по языку программирования Си. В 2 частях. Ч. 1. Практикум
.pdf
121
int main()
{
struct student s[] = {"Привет!", "Университет!"};
printf("%c", s[0].arr[5]);
return 0;
}
• У;
• !;
• т.
9. Каким будет вывод следующего кода на языке Си?
#include <stdio.h>
struct p
{
short int x; char y;
};
int main()
{
struct p p1[] = {{0,'X'},{1,'Y'},{2,'Z'}};
struct p *ptr1 = p1;
int x = (sizeof(p1) / 3);
if (x == sizeof(short int) + sizeof(char)) printf("%d\n", ptr1->x);
else printf("\n\tВнимание! Padding bytes");
return 0;
}
• 1;
• Внимание! Padding byte;
• Compile time error.
10. Какой оператор используется для доступа к элементам структуры
с помощью указателей?
• (->);
• (-) минус;
• (.) точка.

122
11. Прокомментируйте результат компиляции кода на Си:
#include <stdio.h>
int main()
{
struct teststr
{int a; float b; char c;};
struct teststr p[] = {{1, 2.5, 'X'}, {4, 5.7, 'Y'}, {7, 8.9, 'Z'}};
}
• ошибка времени компиляции, недопустимое присвоение элементам
структуры;
• ошибка компиляции, недопустимое объявление многомерного массива;
• нет ошибок компиляции, генерируется массив структур размерности 9;
• нет ошибок компиляции, генерируется массив структур размерности 3.
12. Укажите правильную запись для доступа к i-му элементу в массиве
структур?
struct teststr{
int a;
}arr[50];
• arr[i].b
• arr.a[i];
• arr.[i].a;
• arr.a.[i];
13. Какие конструкции в языке Си используются для группировки
элементов?
• объединения;
• структуры;
• массивы;
• строки.
14. Выберите правильное высказывание об элементах структуры в Си?
• элементы структуры хранятся в смежных областях памяти;
• элементы структуры хранятся в регистровых ячейках памяти;
• элементы структуры хранятся в произвольных свободных местах памяти.

123
15. Какой размер памяти будет выделен для структуры?
struct teststr {
short int arr[15];
char ch;
};
ВНИМАНИЕ! Записать десятичным числом.
16. Пусть объявлена структура date и выполнена инициализация струк-
турных переменных day1 и day2:
struct date
{
int day;
int month;
int year;
};
struct date day1={25,2,2010}, day2={8,3,2010};
Напишите оператор, присваивающий полю day переменной day2 зна-
чение поля day переменной day2, уменьшенное на 1.
ВНИМАНИЕ! Не используйте пробелы в записи оператора.
17. Что является результатом работы следующего кода?
int main(void)
{
struct site
{
char name[20];
int no_of_pages;
}s;
struct site *ptr;
ptr=&s;
strcpy(ptr->name,"Test");
ptr->no_of_pages = 200;
printf("%d ", ptr->no_of_pages);
printf("%s", ptr->name);
getchar();
return 0;
}

124
• 200 Test;
• 200;
• ошибка компиляции;
• Runtime error.
18. При помощи какого выражения можно указателем присвоить зна-
чение 12 в поле month?
struct date {
int day;
int month;
int year;
};
int main()
{
struct date d;
struct date *pdt;
pdt = &d;
return 0;
}
• pdt->month=12
• pdt.month=12
• &pdt.month=12
• d.month=12
19. Какое из утверждений относительно следующего фрагмента кода
является корректным?
lada.engine.bolts=25
• структура bolts вложена в структуру engine;
• структура engine вложена в структуру lada;
• структура lada вложена в структуру engine.

125
20. Что будет результатом работы следующей программы (при условии,
что размер целого типа 32 бита)?
struct st {
int x;
static int y;
};
int main(void)
{
printf(“%d”, sizeof( struct st ));
return 0;
}
• ошибка компиляции;
• 4;
• 8.
21. Что будет являться результатом работы следующей программы?
struct result{
char sub[20];
int marks;
};
void main()
{
struct result res[] = { {"Maths",100},
{"Science",90},
{"English",85}
};
printf("%s ", res[1].sub);
printf("%d", (*(res+2)).marks);
}
• Maths 100;
• Science 85;
• Science 90;
• Science 100.

126
22. Что будет выведено на экран в результате работы следующей
программы?
union test
{
int x;
char arr[4];
int y;
};
int main()
{
union test t;
t.x = 0;
t.arr[1] = 'G';
printf("%s", t.arr);
return 0;
}
• ничего;
• G;
• мусорный символ, за которым следует G;
• мусорный символ, за которым следует G, а потом еще два мусорных
символа.
23. Что будет выведено на экран в результате работы следующей
программы?
#include <stdio.h>
void main()
{
struct demo{
char * a;
int n;
};
struct demo p = {"hello", 2015};
struct demo q = p;
printf("%d", printf("%s",q.a));
}

127
• hello;
• hello5;
• 5hello;
• 7hello.
24. Установите соответствие между началом предложения и его за-
вершением:
Если структура объявлена,
опускать имя_типа при условии,
что присутствует список определений
Список определений состоит
то описание структуры представляет собой
объявление, но не определение данных,
и память ни под какие переменные не выделяется
Поля структуры могут
то в любом месте программы можно создавать
объекты данного типа таким же образом, как
создаются объекты любого другого типа
В описании структуры
допускается
из имен переменных указанного типа,
перечисленных через запятую
Если список определений
отсутствует
иметь любой тип, кроме типа этой же структуры
25. Установите соответствие между номером строки и ее содержимым
в синтаксисе структуры:
1.
...
2.
тип_2 имя_поля_2;
3.
struct [имя типа
4.
тип_n имя_поля_n;
5.
{
6.
тип_1 имя_поля_1;
7.
}[список определений];
26. Как осуществить доступ к элементам массива структур?
• a[0].age
• a.id[5]
• a[1].name
• a[0].sex
27. Может ли функция входить в структуру?
• нет;
• да.

128
28. Какие данные объединяет структура?
• последовательность именованных полей неотрицательного целого типа;
• последовательность именованных полей целого типа;
• последовательность именованных полей одинаковых типов;
• последовательность именованных полей различных или одинаковых типов.
29. Как обратиться к полям структуры student?
• student(sex)
• student:age
• student..name
• student.id
30. Какие из следующих высказываний верны?
• размер объединения равен наименьшему размеру из его полей;
• все поля объединения располагаются по одному и тому же адресу;
• объединение представляет собой частный случай структуры;
• формат описания объединения такой же, как у структуры, но используется
ключевое слово union.
ОТВЕТЫ К ВОПРОСАМ И ЗАДАЧАМ ТЕМЫ 11
1. Какое из определений структуры является правильным?
• структура — это последовательность именованных полей различных или
одинаковых типов и расположенных в памяти компьютера последовательно.
2. Какие из следующих высказываний верны?
• для обращения к элементам структуры используется оператор «точка»;
• элементы структуры могут быть скалярными или массивами, в том числе
другими структурами.
3. Укажите верные высказывания для следующей структуры:
• D — массив целых чисел.
4. Запишите, каким образом полю i переменной s можно присвоить
значение 15:
• abc.i=15.

129
5. Запишите, каким образом полю a переменной s можно присвоить
значение «студент» c использованием функций для работы со строками.
• strcpy (xyz.a,"студенты");
6. Запишите, каким образом присвоить фамилию «Петров» в струк-
турную переменную stu?
• strcpy(stu.f.fam, "Петров");
7. Каким образом получить доступ к полю i через указатель ptr?
• (*ptr).i
8. Каким будет вывод следующего кода на языке Си?
• т.
9. Каким будет вывод следующего кода на языке Си?
• Внимание! Padding byte.
10. Какой оператор используется для доступа к элементам структуры
с помощью указателей?
• (->).
11. Прокомментируйте результат компиляции кода на Си:
• нет ошибок компиляции, генерируется массив структур размерности.
12. Укажите правильную запись для доступа к i-му элементу в массиве
структур?
• arr[i].b.
13. Какие конструкции в языке Си используются для группировки
элементов?
• объединения;
• структуры;
• массивы.
14. Выберите правильное высказывание об элементах структуры в Си?
• в.

130
15. Какой размер памяти будет выделен для структуры?
• 32.
16. Пусть объявлена структура date и выполнена инициализация струк-
турных переменных day1 и day2:
• day1.day=day2.day-1.
17. Что является результатом работы следующего кода?
• 200 Test.
18. При помощи какого выражения можно указателем присвоить зна-
чение 12 в поле month?
• pdt->month=12.
19. Какое из утверждений относительно следующего фрагмента кода
является корректным?
• структура engine вложена в структуру lada.
20. Что будет результатом работы следующей программы (при условии,
что размер целого типа 32 бита)?
• ошибка компиляции.
21. Что будет являться результатом работы следующей программы?
• Science 85.
22. Что будет выведено на экран в результате работы следующей
программы?
• ничего.
23. Что будет выведено на экран в результате работы следующей
программы?
• hello5.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
