Контрольная работа. Указания к выполнению контрольной работы
![]()
|
.Указания к выполнению контрольной работы. В вопросах, где нужно заполнить пробелы, вместо пробела напечатайте свой текст. В вопросах, где нужно выбрать правильный ответ, выделите этот ответ цветом. В вопросах, где есть необходимость указать справедливы или нет следующие утверждения: если утверждение справедливо, то в конце строки напишите слово «да»; если утверждение ложно, то в конце строки напишите слово «нет» и объяснение почему, иначе ответ не будет зачтен. Контрольная работа. 1. Заполнить пробелы в следующих утверждениях: Указатель - это переменная, которая содержит в качестве своего значения _____ другой переменной. Для присвоения указателю начального значения можно использовать три значения: _____, _____ или _____. Единственным целым, которое может быть присвоено указателю, является ______. 2. Укажите, справедливы или нет следующие утверждения. Если они ошибочны, укажите почему. Операция адресации может быть применима только к константам, к выражениям, не имеющим результат, на который можно сослаться, и к переменным, объявленным с классом хранения register. Указатель, объявленный как void, может быть разыменования. Указатели разных типов нельзя присваивать друг другу без операции приведения типов. 3. Заполнить пробелы в следующих утверждениях: Операция адресации _____ возвращает адрес своего операнда. Операция _______, называемая операцией косвенной адресации или операцией разыменования, возвращает значение объекта, на который указывает ее операнд. Это называется разыменованием указателя. Если аргумент вызываемой функции должен ею изменяться, нужно в качестве параметра передавать_________. Функция, принимающая адрес в качестве аргумента, должна в качестве соответствующего формального параметра иметь ________. Спецификатор _______ дает программисту возможность информировать компилятор о том, что значение данной переменной не должно модифицироваться. 4. Каков результат следующего выражения: int *a; int b; a = &b; b = 7; (*a)++; printf(“%d”, b); 7 8 не определено ошибка компиляции 5. Каков будет результат int f(int& x) { static int a = 0; if (!a) a = x++; return a; } int y = 6; f(y); printf(“%d%d\n”, f(y) ,y) ; 7 7 6 7 7 0 7 8 6. Если записано: void f() { static int a; a=4;} main() { int a = 9; f(); printf(“%d”, a); …} } каков будет результат? 9 0 4 7. Каков будет результат static int a ; a = 9; { static int a = 8;} printf(“%d”, a); 9 8 0 8. Заполнить пробелы в следующих утверждениях: Спецификациями классов памяти являются,_____,_____ и _____. Переменные, объявленные в блоке или в списке параметров функции, имеют класс памяти_____, если не указано иное. Спецификация класса памяти _____ представляет собой рекомендацию компилятору хранить переменную в одном из регистров компьютера. Переменная, объявленная вне любого блока или функции, является _____ переменной. Для того чтобы локальная переменная функции сохраняла свое значение между вызовами функции, она должна быть объявлена как имеющая ______класс памяти. ______ предоставляет возможность доступа к глобальной переменной с тем же именем, что и переменная в текущей области действия. 9. Что будет напечатано в результате char x[] = “Hello world ”; char* p=x; p+=4; printf(“%s”, p); o o world Hello world 10. Заполнить пробелы в следующих утверждениях: Структурой в языке C называется совокупность логически связанных переменных ___________ типов, сгруппированных под одним именем Переменные, объявленные в описании структуры, называются ее _____. Объявление структуры начинается с ключевого слова _____. Для создания синонима ранее определенного типа данных используется ключевое слово _____. На имя типа структуры можно ссылаться как на ее _____ . Доступ к элементам структуры осуществляется записью _____ или _____ записью. 11. Укажите, что из нижеследующего верно, а что неверно. Если неверно, то объясните, почему. Структуры могут содержать данные только одного типа. Элементы разных структур должны иметь уникальные имена. Структуры всегда передаются в функции вызовом по ссылке. 12. Заполнить пробелы в следующих утверждениях: Объединение - это производный тип данных, элементы которого совместно используют_________________. Элементы могут быть _________ типа. Память, выделяемая для объединения, должна быть достаточной для того, чтобы в ней_________________________________. Объединения объявляются при помощи ключевого слова __________в том же формате, что и структуры. Доступ к полю объединения осуществляется с помощью операций –________ и __________ . 13. . Если объявлен тип struct Value { double tt; union number { short sx; // если type равен ShortType long lx; // если type равен LongType double dx; // если type равен DoubleType } val; } сколько байтов занимает один объект такого типа ? 8 16 18 22 14.Используя переменную «a», запишите объявления для: а) Указателя на целое б) Указателя на указатель на целое с) Массива из десяти указателей на целые д) Указателя на массив из десяти целых е) Указателя на функцию, которая принимает целочисленный аргумент и возвращает целое ж) Массива из десяти указателей на функции, которая принимает целочисленный аргумент и возвращает целое 15. Дана структура struct countries { char name[20]; char lang[20]; float budget; int population; char type; }; Написать фрагмент кода, записывающий массив структур из 5-ти элементов в файл произвольного доступа. |