- •Вопросы к экзамену по дисциплине
- •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.Метод быстрой сортировки(Хоара).
26.Одномерные и многомерные массивы, их инициализация.
Одномерный массив:
В программе одномерный массив объявляется следующим образом:
тип ID_массива [размер] = {список начальных значений};
тип– тип элементов массива;
размер– количество элементов в массиве.
Список начальных значенийиспользуется при необходимости задать начальные значения (инициализировать элементы массива), он может отсутствовать. Значения в списке разделяются запятыми. (Такое задание списка элементов массива допустимо только при его инициализации и недопустимо в операции присваивания).
Примеры объявления массива:
int a[6];
double x[5]={2, 3.5, -4.5e3, 2.34, -.7 };
Если в группе {…} список значений короче, то оставшимся элементам присваивается 0.
Обращение к конкретному элементу массива в программе осуществляется путем записи имени массива и за ним в квадратных скобках - номера элемента, например:
a[0]=1;
a[i]++;
a[3]=a[i]+a[i+1];
Индексы массивов в языке Си начинаются с 0, т.е. в массиве x первый элемент: x[0], второй – x[1], … пятый – x[4].
Размер массива может задаваться только константой или константным выражением. Нельзя задавать массив переменного размера. Для этого существует отдельный механизм – динамическое выделение памяти.
С другой стороны, если требуемое количество элементов массива заранее неизвестно, часто объявляют массив достаточно большого размера, а используют лишь столько из его элементов, сколько нужно. При этом требуется переменная, задающая количество используемых в данный момент элементов массива:
int a[100], n, i;
M: cout<<"Vvedite kolichestvo elementov (ne bolshe 100)";
cin>>n;
if (n>100) goto M;
cout<<"Vvedite elementy:\n";
for (i=0; i<n; i++)
cin >> a[i];
Внимание. В языке Си с целью повышения быстродействия программы отсутствует механизм контроля выхода за границы индексов массивов. При необходимости такой механизм должен быть запрограммирован явно.
Многомерные массивы:
Многомерные массивы отличаются от одномерных только тем, что каждый элемент характеризуется не одним, а двумя или более индексами. Они используются, например, для хранения таблиц (каждый элемент таблицы имеет 2 индекса - № строки и № столбца).
Декларация многомерного массива имеет следующий формат:
тип ID [размер1] [размер2]…[размерN] =
{ {список начальных значений},
{список начальных значений},
…
};
Списки начальных значений – атрибут необязательный.
Пример:
int a[3][3]={ {1,2,3}, {4,5,6}, {7,8,9} };
Аналогично, при обращении к конкретному элементу многомерного массива указывается имя массива и затем - последовательно индексы элемента, каждый в квадратных скобках; например:
a[2][1]
a[i+1][k]
Рассмотрим особенности работы с многомерными массивами на конкретном примере двумерного массива (двумерные массивы называют также матрицами):
#include <stdio.h>
void main()
{ int i, j;
int m[3][4] = { { 1, 2, 3, 4}, {11,12,13,14}, {21,22,23,24} };
for (i=0; i<3; i++) {
printf("\n %2d)", i+1);
for (j=0; j<4; j++)
printf(" %3d",m[ i ] [ j ]);
}}
Результаты работы программы:
1 2 3 4
11 12 13 14
21 22 23 24