Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы.docx
Скачиваний:
2
Добавлен:
19.06.2023
Размер:
37.39 Кб
Скачать
  1. Примеры применения побитовых операций Печать n-го разряда: a&(1<<n) Задать 0 в n-м разряде: a&(~(1<<n)) Задать 1 в n-м разряде: a|(1<<n) Инвертировать n-й разряд: a^(1<<n)

  2. Условная операция и её использование a ? b : c поиск максимума среди двух: m = a > b ? a : b;

  3. Определение объёма памяти, необходимого для размещения объектов sizeof(<тип данных>) sizeof(<выражение>)

  4. Понятие приоритета операций и его влияние на результаты вычислений Самая приоритетная: ++, --; Самая неприоритетная: ==, +=, -=, …; Изменить приоритет операций можно с помощью круглых скобок.

  5. Вывод простых типов данных на экран printf(…) cout << … cout << “Это”\ “длинная”\ “строка”; cout << “Это” << “длинная” << “строка”;

  6. Ввод данных с клавиатуры scanf(...) cin >> …

  7. Флаги форматирования потоков ввода-вывода Начиная с “ios::”:

    1. left — выравнивание по левому краю

    2. right — выравнивание по правому краю

    3. dec — десятичная форма чисел

    4. oct — восьмеричная форма чисел

    5. hex — шестнадцатеричная форма чисел

  8. Форматирование ввода-вывода с помощью манипуляторов cout << endl; cout << hex << 15; cout << fixed << 1.23e-10 //0.000000000123 #include <iomanip> cout << setw(10) << right << 123;

  9. Форматирование ввода-вывода с помощью функций потоков ввода-вывода

  10. Управление шириной поля вывода и выравниванием данных при выводе cout.width(10); cout.fill('$'); cout << left << 123; //123$$$$$$$

  11. Управление форматом вывода вещественных значений cout.precision(3) cout << fixed << 1.2345; //1.234

  12. Основные понятия структурного программирования

    1. Пошаговая разработка программы.

    2. Разбиение сложных задач на более простые.

    3. Использование базового набора управляющих структур.

  13. Базовый набор управляющих структур

    1. последовательность

    2. ветвление

    3. цикл

  14. Управляющие структуры и инструкции языка C++

    1. Ветвление if, switch

    2. Цикл for, while, do while

    3. Переход break, continue, return, goto

  15. Условная инструкция (if) Выбирает одно из двух направлений if (<условие>) {…} else {…}

  16. Инструкция множественного выбора (switch) Ветвление во многих направлениях switch (<выражение (целого типа)>) { case <константа1>: … (break;) case <константа2>: … (break;) … (default:) … }

  17. Цикл с предусловием (while) while (<условие>) {…}

  18. Цикл с постусловием (do while) do {…} while (<условие>)

  19. Итерационный цикл (for) for (<инициализатор>; <условие>; <модификация>) {…}

  20. Инструкция перехода break Прекращает цикл, в теле которого она расположена.

  21. Инструкция перехода continue Пропускает оставшуюся часть кода тела цикла и переходит к следующей итерации.

  22. Инструкция перехода goto Переходит к инструкции, отмеченной меткой. M1: …; … if (…) goto M1; …

  23. Понятие рекуррентных вычислений, примеры Вычисление значения последовательности, зависимое от предыдущих значений этой последовательности. unsigned f(unsigned n){ if (n == 0) return 1; else return n*f(n-1); }

  24. Понятие и определение массива Массив — индексированная последовательность однотипных элементов с заранее определённым количеством элементов.

  25. Одномерные и многомерные массивы Объявление одномерных: <тип> <идентификатор>[<кол-воЭлементов>] short S[3] = {1, 2, 3}; short S1[] = {1, 2, 3}; Объявление многомерных: <тип> <идентификатор>[<кол-воЭлементов>][<кол-воЭлементов>][<кол-воЭлементов>]… short A[2][3] = { 1, 2, 3, 1, 2, 3 };

  26. Вывод элементов массивов на экран for (int i = 0; i < n; ++i)

cout << setw(8) << left << A[i];

  1. Ввод элементов массивов с клавиатуры for (int i = 0; i < n; ++i) cin >> A[i]; cin.sync(); //очистка ввода

  2. Декларативная и программная инициализация массивов Декларативная: int A[3] = {1, 2, 3} Программная: int A[3]; for (int i = 0; i < 3; ++i) A[i] = i+1;

  3. Копирование массивов for (int i = 0; i < n; ++i) a[i] = b[i] #include <string.h> memcpy(a, b, sizeof(a));

  4. Нахождение минимальных и максимальных значений в массивах int min = A[0], max = A[0]; for (int i = 1; i < n; ++i) { if (min > A[i]) min = A[i]; if (max < A[i]) max = A[i]; }

  5. Сдвиг элементов массивов int tmp = A[0]; for (int i = 1; i < n; ++i) A[i - 1] = A[i]; A[n - 1] = tmp;

  6. Перестановка элементов в массивах void swap(int* A, int index1, int index2) { int tmp = A[index1]; A[index1] = A[index2]; A[index2] = tmp; }

  7. Поиск данных в массивах int search (int* A, int n, int query) { for (i = 0; i < n; ++i) if (query == A[i]) return i; return -1; }

  8. Сортировка данных в массивах for (i = 0; i < n - 1; ++i){ for (j = 0; i <n – 1 - i; ++j) if (A[j] > A[j+1]) { int tmp = A[j+1]; A[j+1] = A[j]; A[j] = tmp; } }

  9. Вычисление сумм и произведений элементов массивов int sum = 0; int product = (n > 0)? 1 : 0; for (i = 0; i < n; ++i) { sum += A[i]; product *= A[i]; }

  10. Представление текстовых строк в виде массива символов Текстовая строка представляет набор символов, заканчивающийся ‘\0’. char S1[] = “Текст”; char S2[6] = “Ошибка”;

  11. Ввод-вывод символьных строк cout << S1; #include <stdio.h> gets(S2);

  12. Определение фактической длины строки int strlen(char* str){ int value = 0; while (str[value++]); return value - 1; }

  13. Копирование символьных строк void strcpy(char* destination, char* source) { int i = 0; while (source[i]) { destination[i] = source[i]; ++i; } destination[i] = ‘\0’; }

  14. Основные функции обработки строк библиотеки cstring strlen(char* S) strcpy(char* destination, char* source) strcat(char* destination, char* source) strcmp(char* str1, char* str2)

  15. Массивы текстовых строк (двумерные массивы символов) char str_array[3][21] = {“ABC”, “АБВ”, “123”} //3 строки по 20 символов (+ ‘\0’)

  16. Указатели При определении переменной, она располагается в памяти по адресу. Получение адреса переменной: &A — 4-байтовое значение Указатель — переменная, служащая для хранения адреса. <тип данных>* <идентификатор> int* ptr = &A;

  17. Арифметика указателей При добавлении/вычитании единицы, значение указателя изменяется на размер базового типа.

  18. Индексирование указателей int A[10]; int* p; p = A; // можно A = p; // нельзя, так как переменная массива — константа

  19. Ссылки Ссылка — неявный указатель, который при использовании автоматически разыменовывается. Объявление ссылки: <тип>& <идентификатор> = <другая переменная>

  20. Определение функции <тип возвращаемого значения> <идентификатор>(<параметры>){…} void — возвращаемое значение отсутствует

  21. Инструкция return Инструкция return позволяет немедленно выйти из функции и вернуть значение в точку вызова.

  22. Завершение работы функции 1) (только для void) выполнение последней инструкции в теле функции 2) return

  23. Механизмы передачи данных через параметры функций При вызове функции для каждого параметра создаётся переменная соответствующая типу данных параметра, в которую копируются значения аргументов, используемых при вызове.

  24. Передача данных по значению void func(int a) { a += 20; } int main() { int a = 123; func(a); return 0; }

  25. Передача данных через указатели void func(int* a) { a += 20; } int main() { int a = 123; func(&a); return 0; }

  26. Передача данных по ссылке void func(int& a) { a += 20; } int main() { int a = 123; func(a); return 0; } void func2(const int& a) { a += 20; //ошибка }

Соседние файлы в предмете Программирование