
- •Вопросы к экзамену по дисциплине
- •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.Метод быстрой сортировки(Хоара).
22.Оператор цикла с заданным числом повторений.
Оператор for
for - оператор цикла с известным числом повторений.
Общий вид оператора:
for (выражение1; выражение2; выражение3) код_цикла;
Цикл for эквивалентен последовательности инструкций:
выражение1;
while (выражение2)
{
код_цикла ...
выражение3;
}
здесь выражение1 - инициация счетчика (начальное значение), выражение2 -условие продолжения счета, выражение3 - увеличение счетчика. Выражения 1,2 и 3 могут отсутствовать (пустые выражения), но символы «;» опускать нельзя. Например, для суммирования первых N натуральных чисел можно запи-
сать:
sum = 0;
for ( i=1; i<=N; i++) sum+=i;
Операция «запятая» чаще всего используется в операторе for. Она позволяет включать в его спецификацию несколько инициализирующих выражений. Предыдущий пример можно записать в виде:
for ( sum=0 , i=1; i<=N; sum+= i , i++) ;
Оператор for имеет следующие возможности:
- можно вести подсчет с помощью символов, а не только чисел:
for (ch = 'a'; ch<='z'; ch++) ... ;
- можно проверить выполнение некоторого произвольного условия:
for (n = 0; s[i]>='0' && s[i]<'9'; i++) ... ;
40
или:
for (n = 1; n*n*n <=216; n++) ... ;
Первое выражение не обязательно должно инициализировать переменную. Необходимо только помнить, что первое выражение вычисляется только один раз перед тем, как остальные части начнут выполняться.
for (printf(" вводить числа по порядку! \n"); num!=6;)
scanf("%d", & num);
printf(" последнее число - это то, что нужно.\n");
В этом фрагменте первое сообщение выводится на печать один раз, а затем осуществляется прием вводимых чисел, пока не поступит число 6. Параметры, входящие в выражения, находящиеся в спецификации цикла можно изменять при выполнении операций в коде цикла.
Например:
for (n = 1; n<1000; n += delta) ... ;
Параметр delta можно менять в процессе выполнения цикла. Использование условных выражений позволяет во многих случаях значительно упростить программу. Например:
for (i=0;i<n;i++)
printf("%6d%c",a[i],( (i%10==0) || (i==n-1) ) ? '\n' : ‟ „);
В этом цикле печатаются n элементов массива а по 10 в строке, разделяя каждый столбец одним пробелом и заканчивая каждую строку (включая последнюю) одним символом перевода строки. Символ перевода строки записывается поле каждого десятого и n-го элементов. За всеми остальными - пробел.
23.Оператор цикла с предусловием.
Общий вид:
while (выражение) код_цикла;
Если выражение в скобках - истина (не равно 0), то выполняется код_цикла. Это повторяется до тех пор, пока выражение не примет значение 0 (ложь). В этом случае выполняется оператор, следующий за while. Если выражение в скобках - ложно (равно 0), то цикл не выполнится ни разу. Код_цикла может включать любое количество управляющих операторов, вязанных с конструкцией while, взятых в фигурные скобки (блок), если их более одного. Среди этих операторов могут быть continue - переход к следующей итерации цикла и break - выход из цикла. Например, необходимо сосчитать количество символов в строке. Предполагается, что входной поток настроен на начало строки. Тогда подсчет символов выполняется следующим образом:
char ch;
int count=0;
while (( ch=getchar())!='\n') count++;
Для выхода из цикла while при истинности выражения, как и для выхода из других циклов можно пользоваться оператором break.
Пример 1:
39
while (1) { // Организация бесконечного цикла
...
if (kbhit()&&(getch()==27)) break;
// Если нажата клавиша (результат работы функции kbhit()>0) и код ее равен 27
// (код клавиши “Esc”), то выходим из цикла
...
}
Пример 2:
...
while (!kbhit()); // Выполнять до тех пор, пока не нажата клавиша
...