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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
61
6. Какой класс памяти можно использовать только для глобальных
переменных?
register;
auto;
static;
extern.
7. Какие классы памяти можно использовать только для локальных
переменных?
register;
auto;
static;
extern.
8. Какой класс памяти используется по умолчанию для локальных
переменных?
register;
auto;
static;
extern.
9. Как обрабатывается переменная c классом памяти register, если ее
хранение в регистре невозможно?
register;
auto;
static;
extern.
10. Переменная доступна во всех модулях программы, если она опре-
делена с классом памяти:
register;
auto;
static;
extern.
62
11. Каково время существования переменной c классом хранения auto?
в течение выполнения блока, в котором она описана;
в течение времени выполнения программы.
12. Каково время существования переменной c классом хранения static?
в течение выполнения блока, в котором она описана;
в течение времени выполнения программы.
13. Каково время существования динамической переменной?
в течение выполнения всей программы;
в течение выполнения блока, в котором она описана;
в течение выполнения всех модулей программы, где она определена;
определяется программистом с помощью использования явных опера-
торов создания и уничтожения.
14. В определении переменной отсутствует инициализирующее выра-
жение. Ей присвоится нулевое значение, если это:
локальная переменная;
переменная с классом памяти static;
переменная с классом памяти auto;
переменная с классом памяти extern.
15. В зависимости от области видимости переменные делят на:
статические и динамические;
локальные и глобальные;
локальные и статические;
постоянные и временные.
16. Какие из переменных a, b и c доступны для функции, находящейся
в другом файле?
extern int a;
int b;
static int c;
main()
{
}
63
только a;
a, c;
a, b, c;
ни одна из них.
17. Каким будет класс хранения переменной k в следующем коде?
#include< stdio.h>
int main()
{
int k = 25;
printf("%d", k);
return 0;
}
register;
auto;
static;
extern.
18. Каким будет вывод при выполнении следующего кода?
#include <stdio.h>
int main()
{
static int k=4;
if(--k)
{
main();
printf("%d ",k);
}
return 0;
}
0 0 0;
3 2 1;
1 2 3.
64
19. Каким будет вывод при выполнении следующего кода?
#include <stdio.h>
int fun()
{
static int num = 19;
return num--;
}
int main()
{
for(fun(); fun(); fun())
printf("%d ", fun());
return 0;
}
17 13 10 7 4 1;
17 14 11 8 5 2;
16 13 10 7 4 1.
20. Напишите пропущенное ключевое слово, чтобы при выполнении
следующего кода не возникло ошибки компиляции:
#include <stdio.h>
int main()
{
______ char a = 'a';
static char b = a;
if(a == b)
printf("Один");
else if(a > b)
printf("Два");
else
printf("Три");
return 0;
}
65
21. Напишите название класса памяти, используемого для объявления
функции в другом файле.
22. Напишите название класса памяти, используемого по умолчанию
для хранения переменных, применяемых только внутри функции.
23. В какой памяти компьютера хранятся переменные с классом хра-
нения register? Напишите аббревиатуру типа памяти.
24. В какой памяти компьютера хранятся переменные с классами хра-
нения auto, static, extern? Напишите аббревиатуру типа памяти.
25. Предположим, что переменная объявлена с классом хранения
register. Какой класс хранения будет использоваться, если ее хранение
в регистре невозможно?
26. Пусть объявлена переменная register float = 2.7f;. Напишите назва-
ние класса памяти переменной float, который будет в действительности
использоваться.
27. Какой класс хранения следует использовать для переменных, тре-
бующих быстрого доступа? Напишите название класса.
28. Напишите имя переменной, имеющей наибольшую область види-
мости в следующем коде:
#include <stdio.h>
int x;
int main()
{
int y;
return 0;
}
int z;
66
29. Для переменных какого типа допускается использовать класс
хранения register?
локальные;
глобальные.
30. Установите соответствие между названием класса хранения пере-
менных и начальными значениями переменных данного класса:
register
0
auto
static
машинное состояние
extern
ОТВЕТЫ К ВОПРОСАМ И ЗАДАЧАМ ТЕМЫ 6
1. Установите соответствие между названием характеристики класса
памяти и ее описанием:
размещение указывает на способ хранения значения переменной.
время существования определяет промежуток времени, в течение кото-
рого переменная сохраняет определенное значение.
область видимости определяет, в каких частях программы будет известно
имя переменной и ее можно будет использовать.
2. Какой класс памяти используется как для локальных, так и для
глобальных переменных?
static.
3. Для каких классов хранения размещение переменных происходит
в RAM?
auto;
static;
extern.
4. Какие типы данных допустимы для переменных с классом памяти
register?
char;
int.
67
5. Какой класс памяти используется для переменных, требующих
быстрого доступа?
register.
6. Какой класс памяти можно использовать только для глобальных
переменных?
extern.
7. Какие классы памяти можно использовать только для локальных
переменных?
register;
auto.
8. Какой класс памяти используется по умолчанию для локальных
переменных?
auto.
9. Как обрабатывается переменная c классом памяти register, если ее
хранение в регистре невозможно?
auto.
10. Переменная доступна во всех модулях программы, если она опре-
делена с классом памяти:
extern.
11. Каково время существования переменной c классом хранения auto?
в течение выполнения блока, в котором она описана.
12. Каково время существования переменной c классом хранения static?
в течение времени выполнения программы.
13. Каково время существования динамической переменной?
определяется программистом с помощью использования явных опера-
торов создания и уничтожения.
14. В определении переменной отсутствует инициализирующее выра-
жение. Ей присвоится нулевое значение, если это:
переменная с классом памяти extern.
68
15. В зависимости от области видимости переменные делят на:
локальные и глобальные.
16. Какие из переменных a, b и c доступны для функции, находящейся
в другом файле?
только a.
17. Каким будет класс хранения переменной k в следующем коде?
auto.
18. Каким будет вывод при выполнении следующего кода?
0 0 0 0.
Для всех вызовов функции main() переменная k имеет начальное значение
0 перед оператором printf().
19. Каким будет вывод при выполнении следующего кода?
17 14 11 8 5 2.
Переменная k в функции fn() имеет класс хранения static. Поэтому значе­ние k сохраняется между вызовами функции fn(). Оператор return k-- является
постфиксным, он возвращает старое значение num и обновляет его для следую-
щего вызова функции fn().
1-е выполнение цикла. При первом вызове функции fn() k имеет значение 19, и выполняется инициализация счетчика цикла for. При проверке на ноль зна­чения условия выполнения цикла for происходит следующий вызов функции fn(), и переменная k принимает значение 18. При вызове функции printf("%d \n", fn()) переменная k принимает значение 17, которое выводится на печать. Затем про­исходит изменение переменной цикла вызовом функции fn(), и переменная k принимает значение, равное 16.
2-е выполнение цикла. Вызывается функция fn(), переменная k имеет зна- чение 16. При проверке на ноль значения условия выполнения цикла for проис­ходит следующий вызов функции fn(), и переменная k принимает значение 15. При вызове функции printf("%d \n", fn()) переменная k принимает значение 14, которое выводится на печать. Затем происходит изменение переменной цикла вызовом функции fn(), и переменная k принимает значение, равное 13.
3-е выполнение цикла. Вызывается функция fn(), переменная k имеет зна-
чение 13. При проверке на ноль значения условия выполнения цикла for проис-
ходит следующий вызов функции fn(), и переменная k принимает значение 12.
69
При вызове функции printf("%d \n", fn()) переменная k принимает значение 11, которое выводится на печать. Затем происходит изменение переменной цикла вызовом функции fn(), и переменная k принимает значение, равное 10.
4-е выполнение цикла. Вызывается функция fn(), переменная k имеет зна-
чение 10. При проверке на ноль значения условия выполнения цикла for проис-
ходит следующий вызов функции fn(), и переменная k принимает значение 9. При вызове функции printf("%d \n", fn()) переменная k принимает значение 8,
которое выводится на печать. Затем происходит изменение переменной цикла вы-
зовом функции fn(), и переменная k принимает значение, равное 7.
5-е выполнение цикла. Вызывается функция fn(), переменная k имеет зна-
чение 7. При проверке на ноль значения условия выполнения цикла for проис-
ходит следующий вызов функции fn(), и переменная k принимает значение 6. При вызове функции printf("%d \n", fn()) переменная k принимает значение 5, ко­торое выводится на печать.
Затем происходит изменение переменной цикла вызовом функции fn() , и переменная k принимает значение, равное 4.
6-е выполнение цикла. Вызывается функция fn(), переменная k имеет зна-
чение 4. При проверке на ноль значения условия выполнения цикла for проис-
ходит следующий вызов функции fn(), и переменная k принимает значение 3. При вызове функции printf("%d \n", fn()) переменная k принимает значение 2, которое выводится на печать. Затем происходит изменение переменной цикла вызовом функции fn(), и переменная k принимает значение, равное 1.
7-е выполнение цикла. Вызывается функция fn(), переменная k имеет зна-
чение 1. При проверке на ноль значения условия выполнения цикла for проис-
ходит следующий вызов функции fn(), и переменная k принимает значение 0. Выполнение цикла завершается.
20. Напишите пропущенное ключевое слово, чтобы при выполнении
следующего кода не возникло ошибки компиляции:
const.
Начальные значения статическим переменным можно присваивать во время их объявления, но они должны быть константами.
70
21. Напишите название класса памяти, используемого для объявления
функции в другом файле.
extern.
Класс памяти extern используется для объявления глобальной переменной или функции в другом файле.
22. Напишите название класса памяти, используемого по умолчанию
для хранения переменных, применяемых только внутри функции.
auto.
Любая переменная, объявленная в теле функции или в блоке кода, счита-
ется принадлежащей к классу auto.
23. В какой памяти компьютера хранятся переменные с классом хра-
нения register? Напишите аббревиатуру типа памяти.
CPU. В регистрах центрального процессора (CPU).
24. В какой памяти компьютера хранятся переменные с классами хра-
нения auto, static, extern? Напишите аббревиатуру типа памяти.
RAM.
25. Предположим, что переменная объявлена с классом хранения
register. Какой класс хранения будет использоваться, если ее хранение
в регистре невозможно?
auto.
Если хранение переменной в регистре невозможно, то она обрабатывается как auto.
26. Пусть объявлена переменная register float = 2.7f;. Напишите назва-
ние класса памяти переменной float, который будет в действительности
использоваться.
бб.
27. Какой класс хранения следует использовать для переменных, тре-
бующих быстрого доступа? Напишите название класса.
register.
Класс хранения register следует использовать только для переменных, тре-
бующих быстрого доступа, таких как счетчики.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]