
- •Вопросы к экзамену по дисциплине
- •6. Типы данных: целый, вещественный, символьный. Размеры данных.
- •7.Правила определения переменных в программе. Инициализация переменных.
- •10.Операции сдвига.
- •11.Операции отношения, логические операции.
- •Int I, j, k;
- •15.Приоритет операций и порядок вычисления выражений.
- •16.Функция форматированного вывода printf.
- •18.Операторы преобразования данных и операторы управления. Оператор простой и составной, блок.
- •(Последовательно выполняемые операторы)
- •19.Виды управляющих конструкций программы.
- •20.Операторы ветвления, условный оператор.
- •21.Оператор переключения(Switch).
- •22.Оператор цикла с заданным числом повторений.
- •23.Оператор цикла с предусловием.
- •24.Оператор цикла с постусловием.
- •25.Операторы прерывания и продолжения цикла.
- •26.Одномерные и многомерные массивы, их инициализация.
- •27.Указатели. Связь между указателями и массивами.
- •28.Операции над указателями и массивами.
- •29.Операции взятия адреса, обращения по адресу.
- •30.Определение функции. Возвращение значения: оператор return. Описание функции, вызов функции.
- •31.Аргументы функции: формальные и фактические. Передача аргументов, стек.
- •32.Рекурсивные программы.
- •33.Функции для работы со строками: сравнение, копирование.
- •47. Функции для работы со строками: поиск в строке.
- •34.Функции для работы со строками: преобразование форматов.
- •35.Локальные и глобальные переменные.
- •36.Классы памяти. Автоматические переменные. Внешние и статические переменные.
- •37. Декларация структур.
- •38. Инициализация и доступ к элементам структуры.
- •39. Вложенные структуры и массивы структур.
- •40. Указатели на структуры.
- •41.Файлы.Функции работы с указателем текущей позиции файла.
- •43.Функция чтения и записи в файл в построчном режиме.
- •44.Функция чтения и записи в файл в посимвольном режиме.
- •45.Функция чтения и записи двоичных файлов.
- •46.Списки.Операции над списками. Односвязные и двусвязные списки.
- •47.Реализация списка на основе массива структур.
- •48.Реализация списка на основе массива данных.
- •49.Очереди. Операции над очередями.
- •50.Реализация очереди на основе массива.
- •51.Стеки. Операции над стеками.
- •52.Реализация стека на основе массива.
- •53.Сортировка методом обмена(пузырька).
- •Анализ пузырьковой сортировки. Пузырьковая сортировка обладает несколькими характеристиками:
- •54.Методом выбора.
- •55.Методом вставки.
- •56.Методом Шелла.
- •57.Метод быстрой сортировки(Хоара).
24.Оператор цикла с постусловием.
Общий вид записи:
do код_цикла while (выражение);
Код_цикла будет выполняться до тех пор, пока «выражение» истинно. Все, что
говорилось выше справедливо и здесь, за исключением того, данный цикл все-
гда выполняется хотя бы один раз, после чего проверяется, надо ли его выпол-
нять еще раз.
25.Операторы прерывания и продолжения цикла.
Оператор прерывания goto:
В языке Си предусмотрен оператор goto, хотя в большинстве случаев можно обойтись без него. Общий вид оператора:
goto < метка >;
Он предназначен для передачи управления на оператор, помеченный меткой. Метка представляет собой идентификатор, оформленный по всем правилам идентификации переменных с символом «двоеточие» после него, например, пустой помеченный оператор:
m1: ;
Область действия метки - функция, где эта метка определена. В случае необходимости можно использовать блок.
Наиболее характерный случай использования оператора goto - выполнение прерывания (выхода) во вложенной структуре при возникновении грубых неисправимых ошибок во входных данных. И в этом случае необходимо, выйти из двух (или более) циклов, где нельзя использовать непосредственно оператор break, т.к. он прерывает только самый внутренний цикл:
for (...)
for (...)
{ ...
if ( ошибка ) goto error;
}
...
error: - операторы для устранения ошибки;
Если программа обработки ошибок нетривиальна и ошибки могут возникать в нескольких местах, то такая организация оказывается удобной. Пример нахождения первого отрицательного числа в двумерном массиве:
for (i=0; i<N; i++)
for(j=0; j<M; j++)
{
if (v[i][j]<0) goto found;
... // Не найден
}
found: ... // Найден
Программа с goto может быть написана и без него, хотя, за счет повторения некоторых проверок и введения дополнительных переменных. Например, рассмотренная программа может быть записана следующим образом:
found = 0;
for (i=0; i<N && !found; i++)
for (j=0; j<M && !found; j++)
found = v[i][j]<0;
if (found) ... // Найден
else ... // Не найден
Оператор продолжения continue:
Этот оператор может использоваться во всех типах циклов, но не в операторах переключателя switch. Наличие оператора continue вызывает пропуск "оставшейся" части итерации и переход к началу следующей, т.е. досрочное завершение текущего шага и переход к следующему шагу. В циклах while и do это означает непосредственный переход к проверочной части. В цикле for управление передается на шаг коррекции, т.е. модификации выражения 3. Фрагмент программы обработки только положительных элементов массива a, отрицательные значения пропускаются:
for ( i = 0; i<n; i++)
{ if( a[i]<0) continue;
... // обработка положительных элементов
}
Оператор continue часто используется, когда последующая часть цикла
оказывается слишком сложной, так что рассмотрение условия, обратного проверяемому, приводит к слишком высокому уровню вложенности программы.