Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сборник тестовых вопросов и задач по языку программирования Си. В 2 частях. Ч. 1. Практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
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.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]