
1 семестр:
1. Представление программы и данных в компьютере. Модель выполнения программы в типичной среде программирования С++.
2.Опишите применение директив препроцессора #include и #define.
3.Лексический анализ программы. Примеры выделения лексем.
4.Основные группы лексем, выделяемые компилятором. Примеры выделения лексем.
5.Примеры строковых литералов. Размещение длинной строковой константы в нескольких строках.
6.Примеры определений символьной константы. Отличие между 'a' и “a”.
7.Примеры числовых литералов в разных системах счисления (8, 16, 10).
8.Примеры определений вещественной константы. Можно ли в одном операторе определить несколько переменных разных типов?
9.Явное указание требуемого типа для числа в выражении. Примеры инициализации переменных одним и тем же значением в 10-ной и 16-ной системах счисления.
10. «Пустая строка» и ее внутреннее представление.
11. Правила выбора идентификатора пользователя. Может ли он совпадать с ключевым словом и со стандартным идентификатором?
12. Понятие «тип» информационного объекта и его характеристики.
13. Понятие переменной.
14. *Атрибуты информационного объекта и их характеристика.
15. Классы памяти и их назначение.
16. Совпадает ли область видимости переменной с областью действия?
17. Что такое «область действия идентификатора»? Как она определяется?
18. Какую переменную называют локальной? Как определяется область действия локальной переменной? Какова протяженность области видимости «локального имени» ?
19. Какую переменную называют глобальной? Как определяется область действия глобальной переменной? Какова протяженность области видимости «глобального имени» ?
20. Привести примеры, когда описание имени скрывает другое описание этого же имени. Примеры скрытого глобального и скрытого локального имени и обращения к ним.
21. Примеры использования переменных с разными атрибутами и разным пространством имен.
22. Указать область действия для всех идентификаторов:
int cube(int y); void main() {int x; for (x=1; x<=10; x++) cout<<cube(x)<<endl;} int cube(int e){return e*e*e;}
23. Указать область видимости переменных, используемых в блоке:
int x = 11;
void f4()
{
int y = x;
int x = 22;
y = x;
}
24. Как транслятор определяет класс памяти для переменной?
25. Пример соотношения областей видимости и действия в многофайловом проекте.
26. Укажите неверные объявления
int func()
{
static int a;
int static b;
int extern c;
extern int k; extern static int d; }
27. Объяснить различие между описанием, определением и объявлением переменной.
28. Эквивалентны ли записи:
const int i = 17;
#define i 17
29. Указать определения:
char ch;
char* name = "Njal";
struct complex { float re, im; };
complex cvar;
extern complex sqrt(complex);
extern int error_number;
typedef complex point;
float real(complex* p) { return p->re; };
const double pi = 3.1415926535897932385;
struct user;
template<class T> abs(T a) { return a<0 ? -a : a; }
enum beer { Carlsberg, Tuborg, Thor };
30. Указать объявления:
char ch;
char* name = "Njal";
struct complex { float re, im; };
complex cvar;
extern complex sqrt(complex);
extern int error_number;
typedef complex point;
float real(complex* p) { return p->re; };
const double pi = 3.1415926535897932385;
struct user;
template<class T> abs(T a) { return a<0 ? -a : a; }
enum beer { Carlsberg, Tuborg, Thor };
31. Структура программы, программного файла и функции на С++.
32. Можно ли определить вложенные функции? Если да, то каким образом и какова допустимая глубина вложенности?
33. *Структура программы состоящей из нескольких программных файлов на примере программы сортировки строк.
34. Указать и объяснить ошибку, если она есть:
1. const int j = 17;
j = 29;
2. const int j (17);
3. const int i;
4. int &i =2;
5. int count;
int count;
6. extern int error_number;
extern short error_number;
7. extern int error_number;
extern int error_number;
8. void f5(int x)
{
intx;
}
35. Можно ли в одном операторе инициализировать несколько переменных?:
36. Может ли тип инициализирующего выражения не совпадать с типом определяемой переменной? Если да, то приведите примеры.
37. Как определить размер памяти для переменной типа int. От чего он зависит?
38. Зачем используются спецификаторы short, long?
39. Логические операции и выражения. Короткая схема вычисления логического выражения (примеры).
40. Поразрядные логические операции (примеры использования).
41. Операции ! ~ & % .
42. Операции / << ^ .
43. Операции >> || &&.
44. Операции ? , (тип).
45. Операция sizeof?
46. Вычислить значение:
char var = 0x1F & 9 >> 1 + 1;
47. Определить цифры вещественного числа вида ab.cd.
48. Приведите примеры использования операции преобразования типа.
49. Вычислить значение :
int x= (7+6)%5/2 ; x-?
int x, y, z; x=y=1; z = x++ - 1; z += -x++ + ++y; x-?, y-?, z-?
int x, y, z; x=2, y, z;x *=3+2;x *=y=z=4;x =y==z;x-?, y-?, z-?
50. Вычислить значение :
int x=2, y=1, z=0; x=((x&&y)||z); x=x || !y &&z; x-?, y-?, z-?
int x, y, z; x = y = z = 1; ++x || ++y && ++z; x-?, y-?, z-?
int x, y, z; x = y = z = -1; ++x || ++y && ++z; x-?, y-?, z-?
51. С помощью какой операции и как можно найти остаток от деления числа (unsignedi) на 2, 4 и т.д.
52. Операции сдвига (примеры их использования для умножения и деления на степень 2).
53. С помощью какой операции и как можно проверить наличие единицы в требуемом разряде переменной.
54. С помощью какой операции и как можно «выключить» значение требуемого бита переменной.
55. С помощью какой операции и как можно «включить» значение требуемого бита переменной.
56. Записать логическое выражение для высказывания:
Данное целое число i(ab) является четным двузначным
Данное целое число i(abc) является нечетным трехзначным
Среди трех данных целых чисел есть хотя бы одна пара совпадающих
Среди трех данных целых чисел есть хотя бы одна пара взаимно противоположных
Все цифры данного целого числа i(abc) различны
Цифры данного целого числа i(abc) образуют возрастающую последовательность
Цифры данного целого числа i(abc) образуют возрастающую или убывающую последовательность
Данное целое число i(abcd) читается одинаково слева направо и справа налево
Квадратное уравнение имеет вещественные корни
Точка с координатами (x, y) лежит во второй координатной четверти
Точка с координатами (x, y) лежит в четвертой координатной четверти
Точка с координатами (x, y) лежит во второй или третьей координатной четверти
Точка с координатами (x, y) лежит в первой или третьей координатной четверти
Точка с координатами (x, y) лежит внутри прямоугольника, левая верхняя вершина которого имеет координаты (х1, y1), правая нижняя – координаты (x2, y2), а стороны параллельны координатным осям
Треугольник со сторонами a, b, c является равносторонним
Треугольник со сторонами a, b, c является равнобедренным
Треугольник со сторонами a, b, c является прямоугольным
Существует треугольник со сторонами a, b, c
Даны координаты поля шахматной доски x, y (натуральные числа из диапазона 1-8): x – номер вертикали, y – номер горизонтали. Учитывая, что левое нижнее поле доски (1,1) является черным, проверить истинность высказывания «данное поле является белым».
Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (натуральные числа из диапазона 1-8): Выяснить являются ли поля (k, l) и (m, n) одного цвета.
логическое выражение для проверки наличия единицы в бите №5 переменной Х типа char:
логическое выражение для проверки наличия единицы в битах №5, №2, №0 переменной Х типа char:
«Выключение» бита №3 переменной Х типа char (при неизменном значении других битов) выполняет оператор:
«Выключение» битов №3 и №7 переменной Х типа char (при неизменном значении других битов) выполняет оператор:
«Выключение» бита №4 переменной Х типа char (при неизменном значении других битов) выполняет оператор:
«Включение» битов №4, №1, №0 переменной Х типа char (при неизменном значении других битов) выполняет оператор:
«Инвертирование» бита №5 переменной А типа char (при неизменном значении других битов) выполняет оператор:
Если целые переменные n, k имеют одинаковую четность, то:Значение trueимеют логические выражения:
Если логические переменные а, b имеют противоположные значения, то Значение trueимеют логические выражения:
если только одна из логических переменных a, bимеет значение true, то Значение trueимеют логические выражения:
логические выражения имеют Значение true только тогда, когда только одна из логических переменных a, bимеет значение true:
Если только одно из чисел x, y, zположительно, то Значение trueимеют логические выражения:
логические выражения имеют Значение trueтолько тогда, когда только одно из целыхчисел x, y, zположительно:
Если каждое из целых чисел x, y, z – положительно, то Значение trueимеют логические выражения:
логические выражения имеют Значение trueтолько тогда, когда каждое из целых чисел x, y, z – положительно:
Если ни одно из целых чисел x, y, z не является положительным, то Значение trueимеют логические выражения:
логические выражения имеют Значение true только тогда, когда ни одно из целых чисел x, y, z не является положительным:
Если хотя бы одно из целых чисел x, y, zположительно, то Значение trueимеют логические выражения:
Если х есть минимальное из трех чисел x, y, z, то Значение trueимеют логические выражения:
логические выражения имеют Значение true только тогда, когда х есть минимальное из трех чисел x, y, z:
Если х принадлежитотрезку[-1, 1], то Значение trueимеют логические выражения: Если х лежитвнеотрезка[-1, 1], то Значение trueимеют логические выражения: Если х принадлежитинтервалу (2, 10) или (-2, 2), тоЗначение trueимеют логические выражения:
Если х лежит вне интервалов (-2, 0) и (2, 5), то Значение trueимеют логические выражения:
Если натуральное n является полным квадратом, то Значение trueимеют логические выражения:
логические выражения имеют Значение trueтолько тогда, когда натуральное n является полным квадратом:
57. Примеры формулировки высказываний по логическому выражению.
58. Как записать тернарную операцию для оператора:
if (x<0) x=5;
59. Интерпретировать запись:
if (a=b) выражение;
if (a<x<b) выражение;
if (int i=fun(k)) выражение;
60. Особенности выполнения операций ++ --.
61. Корректно ли выражение ? ++х = fun(x);
x<<y;
62. Правила работы с данными вещественных типов.
63. Сравните переменные типов float и double по назначению, объему памяти, внутреннему представлению.
64. Алгоритм и его свойства.
65. Содержание понятия «структурное программирование».
66. Типы алгоритмов. Базовые программные конструкции.
67. Циклические алгоритмы.
68. Алгоритм нахождения наибольшего из трех чисел.
69. Алгоритм табулирования на отрезке функции двух аргументов с равномерным изменением шага каждого из них.
70. Алгоритм нахождения корня нелинейного уравнения методом половинного деления.
71. Определите понятие «оператор». Каждый ли оператор заканчивается «точкой с запятой»?
72. Определите понятие «пустой оператор» и приведите пример его использования.
73. Реализация управляющих структур средствами С++.
74. Синтаксис оператора switch?
75. Использование операторов break, сontinue, return и функции exit().
76. Синтаксис оператора цикла с предусловием. Организация на его основе бесконечного цикла.
77. Синтаксис оператора цикла с постусловием. Организация на его основе бесконечного цикла.?
78. Синтаксис оператора цикла for. Организация на его основе бесконечного цикла. Использование «неполных» форм записи оператора цикла for, семантика работы оператора в таком случае.
79. Примеры выражения оператора цикла for через while.
80. Реализация в С++ алгоритмов циклов с параметром.
81. Реализация в С++ алгоритмов с итерационными циклами.
82. Приемы эффективного программирования.
83. Определение наибольшей степени заданного числа, которую можно вычислить, пользуясь типом long.
84. Табулирование функции на отрезке с выбором расчетной формулы.
85. Вычисление суммы членов бесконечного ряда (ряд Тейлора) на отрезке.
86. Вычисление значения многочлена на отрезке.
87. Системы счисления. Перевод целых и дробных чисел из одной системы счисления в другую (10->2, 10->16, 2->10, 2->16).
88. Логическое представление в компьютере целых чисел (с примерами).
89. Логическое представление в компьютере вещественных чисел (с примерами).
90. Внутреннее представление величины целого типа со спецификатором unsigned.
91. Определение и способы инициализации указателей. Операции над указателями. Можно ли указателю присвоить числовое значение?
92. *Можно ли определить указатель на указатель на заданный тип? Если да, то дайте объяснение, что это за объект.
93. Результат выполнения операторов:
int *p=new int;
int *q=p;
delete p;
p=NULL;
94. Что выполняют следующие операторы?
int *p=new int;
if (p=NULL) ….;
95. Указать правильные объявления указателей р и рр:
char *p, pp=NULL;
char *pp;
char *p=new char;
char *pp=p;
96. Особенности выполнения операций + - и ++ -- для указателей.
97. Проинтерпретируйте выражение (pointer)?1:0 ?
98. Укажите особенности использования указателей типа void *.
99. *Можно ли сказать, что приведенное выражение использует переменную, не имеющую имени:
*p[a+10]=7.
100. *Дайте интерпретацию выражениям:
++p=(int *)3; (*p)++=3; p++=3; где р - указатель.
int a=5; int * p=&a;
cout << p << endl; //0027FA78
cout << (*p)++ << endl; //5
cout << p << endl; //0027FA78
cout << *p << endl; //6
101. *Составить описание типа:
функция, не возвращающая значения, с параметрами типа
указатель на символ и ссылка на целое;
указатель на функцию, не возвращающую значения, с параметрами типа
указатель на символ и ссылка на целое;
функция с параметром, имеющим тип
указателя на функцию, не возвращающую значения, с параметрами типа
указатель на символ и ссылка на целое;
функция без параметров, возвращающая
указатель на функцию, не возвращающую значения, с параметрами типа
указатель на символ и ссылка на целое;
102. *Запишите прототип функции, у которойпараметр и возвращаемое значение имеют тип указателя на функцию с параметрами типа указатель на символ и ссылка на целое и невозвращающую значения.
103. *Проинтерпретируйте выражение int *(*pp[15])().
104. *Проинтерпретируйте выражение int *(*pp[15])(int *).
105. *Правило интерпретации списка атрибутов при описании переменной и запись списка атрибутов по словесной формулировке.
106. Определите понятие «ссылка». Как инициализировать ссылку?
107. Как изменить значение ссылки после инициализации?
108. Можно ли построить ссылку на ссылку? указатель на ссылку?
109. *Виды указателей (указатель на константу, константный указатель, константный указатель на константу) и их особенности.
110. Можно ли выполнить присваивание?
const int* p;
int i = 17;
p = &i;
111. Можно ли выполнить присваивание?
const int* p;
int i = 17;
*p = 29;
112. Указать и объяснить ошибку, если она есть :
int i = 17;
int j = 29;
int* const p;
113. Указать и объяснить ошибку, если она есть:
int i = 17;
int j = 29;
int* const p1 = &i;
114. Указать и объяснить ошибку, если она есть :
int i = 17;
int j = 29;
int* const p1 = &i;
*p1 = 29;
115. Указать и объяснить ошибку, если она есть :
int i = 17;
int j = 29;
int* const p1 = &i;
p1 = &j;
116. Указать и объяснить ошибку, если она есть:
int i = 17;
int j = 29;
const int* const p;
117. Указать и объяснить ошибку, если она есть :
int i = 17;
int j = 29;
const int* const p1 = &i;
118. Указать и объяснить ошибку, если она есть:
int i = 17;
int j = 29;
const int* const p1 = &i;
*p1 = 29;
119. Указать и объяснить ошибку, если она есть:
int i = 17;
int j = 29;
const int* const p1 = &i;
p1 = &j;
120. Сколько раз может быть определена вызываемая в программе функция?
121. Чем отличается описание функции от ее определения?
122. Как можно организовать обмен данными между функциями?
123. *Назначение и пример использования функции atexit().
124. *Опишите механизм вызова функций
125. Укажите особенности передачи параметров функций по значению, по адресу, по ссылке.
126. Особенности задания и пример использования параметров функций со значениями по умолчанию.
127. *Пример использования в функции локальных статических переменных.
128. Пример использования inline-функции.
129. *Пример функции, получающей в качестве параметра и возвращающей значения перечислимого типа.
130. Перегрузка функций. Примеры перегрузки функций.
131. Примеры неоднозначности при перегрузке функций.
132. Назначение и пример реализации шаблона семейства функций.
133. *Как передать функции переменное число параметров? Как их обработать?
134. Можно ли объявить параметры функции с модификатором const? В каком случае?
135. Есть ли это определение функции?
extern void swap(int*, int*);
136. Есть ли это определение функции?
void swap(int* p, int* q)
{
int t = *p;
*p = *q;
*q = t;
}
137. Для чего в описании функции указываются имена параметров?
138. Указать и объяснить ошибку, если она есть:
void swap(int* p, int* q, int);
main ()
{int x=2;
int y=5;
swap(&x, &y, 5);
cout << x << " " << y << endl;
return 0;
}
void swap(int* p, int* q, int)
{
intt = *p;
*p = *q;
*q = t;
}
139. *Какие возможности предоставляет неиспользуемый формальный параметр в функции?
140. Как изменяются значения переменных в функции g()?
voidf(intval, int& ref)
{
val++;
ref++;
}
voidg()
{
inti = 1;
intj = 1;
f(i, j);
}
141. Какие функции считаются одинаковыми, а какие – разными?
142. Какие функции могут быть перегружены:
void Fn(); //1
void Fn(int); //2
void Fn(long); //3
int Fn(int); // 4
int Fn(char*); // 5
void Fn(int, char*); //6
void Fn(char*, int); // 7
void Fn(char* s, int x, int y = 17); // 8 Fn(“hello”, 17);
143. Указать и объяснить ошибку, если она есть:
void f(const int* p)
{*p = 17;
}
// вmain
int i = 17;
f(&i);
144. Указать и объяснить ошибку, если она есть:
void f(const int* p)
{*p = 17;
int i = 29;
p = &i;
}
// вmain
int i = 17;
f(&i);
145. Указать и объяснить ошибку, если она есть:
voidf(constint& p)
{p = 17;
}
// в main
int i = 17;
f(i);
146. Указать и объяснить ошибку, если она есть:
void f(const int& p)
{int i = 29;
p = i;
}
// вmain
int i = 17;
f(i);
147. Указать и объяснить ошибку, если она есть:
void f(int*);
int i = 17;
const int* p = &i;
const int j = 29;
f(&i);
148. Указать и объяснить ошибку, если она есть:
void f(int*);
int i = 17;
const int* p = &i;
const int j = 29;
f(p);
149. Указать и объяснить ошибку, если она есть:
void f(int*);
int i = 17;
const int* p = &i;
const int j = 29;
f(&j);
150. Как можно использовать базовый тип void?
151. Правила оформления и вызова функций.
152. Какие типы возвращаемых значений недопустимы для функций?
153. *Особенности передачи параметров в функцию main.
154. Указать ошибки, если они есть: intsum(intx, inty){
int result;
result=x+y;
}
155. Указать ошибки, если они есть : intsum(intn){
if(n=0) return 0;
else n+sum(n-1);
}
156. Установить область действия для всех идентификаторов: intcube(inty); voidmain() {
int x;
for (x=1; x<=10; x++)
cout<<cube(x)<<endl;
} int cube(int e) {return e*e*e;}
157. Указатьошибки, еслиониесть : int g(void) {cout<<”function g”<<”\n” Int h ( ) {cout <<”function h”<<endl;
}
}
158. Указать ошибки, если они есть : int g(void) {cout<<”functiong”<<”\n”;return 0;}
inth ( ) {cout <<”functionh”<<endl;return 0;}
159. Указать ошибки, если они есть : voidp( ) {inta, b, c, result;
cin >>a >>b>>c;
result=a*b*c;
cout<<result;
returnresult;
}
160. Правила описания перегруженных функций.
161. Элементы оптимизации работы с функциями.
162. *Как понимать следующее описание?
typedef int (rifii&) (int, int);
163. Пример использования typedef для определения новых типов.
164. *Использование указателя на функцию при передаче функции в качестве параметра (примеры вычисления интеграла, корня нелинейного уравнения).
165. Понятие рекурсии. Пример рекурсии с выполнением действий на рекурсивном спуске и на рекурсивном возврате.
166. *Структура рекурсивной функции. Условия «правильного» рекурсивного определения.
167. *Рекурсивная функция вычисления чисел Фибоначчи. Вычисление НОД через итерации и через рекурсивную функцию.
168. Определите понятие «массив». Обращение к элементам массива (в том числе и через указатель). Примеры инициализации массива.
169. Чемусоответствуетзаписьint *anArray: anArray[0], anArray[1], *anArray[0], *anArray[1]
170. Генерирование случайных значений одномерных массивов, «красивый» вывод (в том числе и через указатель).
171. Одномерный динамический массив из n элементов?
172. Исправить ошибку, если она есть:
int b[10]={1}; for (int i=0; i<=10; i++) b[i]=2;
173. *Массивы указателей. Массив указателей на функцию. Пример использования.
174. Правила передачи одномерного массива функции в качестве параметра. Пример.
175. Пример функции, возвращающей указатель на одномерный массив.
176. Пример функции, возвращающей ссылку на элемент массива.
177. Пример проверки значений одномерного массива на упорядоченность.
178. Перегрузка шаблона функций на примере обмена значений переменных и обмена значений одномерных массивов.
179. Примеры работы с символьными массивами.
180. Особенности задания строки как массива символов.
181. Укажитеотличия :
char str[]=”qwerty”; char str[12]=”qwerty”; char *str=”qwerty”;
182. Как присвоить одну строку другой?
183. Вычислитьзначение :
char hello[] = "moto";
if (sizeof(hello) == strlen(hello) ) printf("true"); else printf("false");
184. Основные функции работы со строками. Особенности ввода строк.
185. Результат выполнения программы:
int main() { char* str = "Wello, World!"; str[0] = 'H'; cout << str; }
186. *Особенности работы с функцией strtok. Примеры использования функции для выделения предложений текста и отдельных слов.
187. *Создание динамического массива строк.
188. Реализация алгоритма перевода десятичного числа в двоичное с использованием строк.
189.Описание и инициализация двумерного массива. Организация доступа к его элементам (в том числе и через указатель).
190. Операции над двумерными массивами.
191. Исправить ошибку, если она есть:
int a[2][2]={{1,2},{3,4}}; a[2,2]=4;
192. Простейшие способы передачи двумерного массива в функцию в качестве параметра.
193. *Передача в функцию двумерного массива в качестве параметра как одномерного и имитация внутри функции доступа к двумерному массиву.
194. *Передача двумерного массива в функцию в качестве параметра с использованием вспомогательных массивов указателей на одномерные массивы.
195. * Создание 2-мерного динамического массива с использованием вспомогательного одномерного массива и приведенного индекса.
196. * Создание 2-мерного динамического массива с использованием указателя на указатель.
197. *Особенности использования массивов указателей и двумерных массивов для работы со строками.
198. *Возврат из функции двумерного массива.
199. Особенности передачи массивов как параметров.
200. Способы присвоения массивов (одномерного и двумерного).
201. Построчная обработка матрицы (найти некоторый параметр (сумму, количество элементов строки с заданным условием, наибольший/наименьший элементы, заданный элемент и т.д. для каждой строки матрицы).
202. Обработка матрицы по столбцам (найти некоторый параметр (сумму, количество элементов строки с заданным условием, наибольший/наименьший элементы, заданный элемент и т.д. для каждого столбца матрицы ).
203. Обработка всей матрицы. Поиск максимального элемента и его номера. Обход матрицы «по спирали».
204. Обработка части матрицы (элементов выше/ниже/на главной/побочной диагонали) квадратной матрицы.)
205. Перестановка двух заданных строк или столбцов матрицы.
206. Преобразование матрицы. Удаление и вставка строки.
207. Нахождение количества положительных элементов между максимальным и минимальным элементами массива.
208. Нахождение суммы элементов массива, расположенных правее последнего отрицательного элемента.
209. *Сортировка массива. Сортировка массива вставкой. Сортировка массива выбором.
210. *Сортировка одномерного массива по возрастанию последней цифры значения элемента.
211. Поиск в массиве.
212. *Инвертирование строки с помощью рекурсивной функции.
213. Передача строки в функцию в качестве параметра.
214. *Передача массива строк в функцию в качестве параметра.
215. Понятие вычислительной системы, ее структуры и архитектуры.
216. Тенденции развития вычислительных систем.
217. Понятие поколения ЭВМ. Архитектурно-функциональные принципы ЭВМ первых поколений.
218. Понятие производительности вычислительной системы; направления устранения ограничений на пути ее развития.
219. Содержание этапов жизненного цикла ПО.
220. Понятия тестирования и отладки.
221. Суть тестирования по принципу «черного ящика».
222. Суть тестирования по принципу «белого ящика».