- •Введение
- •1. ТИПЫ ДАННЫХ И ОПЕРАТОРЫ
- •1.1. Переменные и базовые типы данных
- •1.2. Операции и выражения
- •1.3. Символические константы
- •1.5. Несколько слов о функции main()
- •2. ВВОД И ВЫВОД В СИ
- •2.2. Форматный ввод-вывод
- •3. ЦИКЛЫ И ОПЕРАТОРЫ СРАВНЕНИЯ
- •3.1. Условный оператор
- •3.2. Оператор выбора switch
- •3.3. Операторы цикла
- •3.4. Операторы break и continue
- •3.5. Примеры
- •3.6. Вычисление значений элементарных функций
- •3.7. Задачи
- •4. ОБРАБОТКА ПОСЛЕДОВАТЕЛЬНОСТЕЙ
- •4.1. Примеры
- •4.2. Задачи
- •5. ОДНОМЕРНЫЕ МАССИВЫ
- •5.1. Начальные сведения о массивах
- •5.2. Примеры работы с массивами
- •5.3. Задачи
- •6. МНОГОМЕРНЫЕ МАССИВЫ
- •6.1. Определение и инициализация двумерных массивов
- •6.2. Примеры с двумерными массивами
- •6.3. Задачи
- •7. УКАЗАТЕЛИ И МАССИВЫ
- •7.1. Указатели и адреса
- •7.2. Указатели и аргументы функций
- •7.3. Указатели и массивы
- •7.4. Операции с указателями
- •7.5. Указатели с типом void
- •7.6. Модификатор const
- •7.7. Массивы переменного размера
- •7.8. Массивы указателей
- •7.9. Двумерные массивы переменного размера
- •8. СИМВОЛЫ И СТРОКИ
- •8.1. Представление символьной информации в ЭВМ
- •8.2. Библиотека обработки символов
- •8.3. Строки в языке Си
- •8.4. Функции обработки строк
- •8.5. Функции преобразования строк
- •8.6. Примеры работы со строками
- •8.7. Разбиение строки на лексемы
- •8.8. Задачи
- •9. СТРУКТУРЫ
- •9.1. Основные сведения о структурах
- •9.2. Объединения
- •10. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА
- •10.1. Директива #include
- •10.2. Директива #define
- •10.3. Директива #undef
- •10.4. Условная компиляция
- •11. ФУНКЦИИ
- •11.1. Основные сведения о функциях
- •11.2. Прототипы функций
- •11.3. Классы памяти
- •11.4. Указатели на функции
- •11.5. Рекурсия
- •11.6. Примеры с использованием рекурсии
- •11.7. Метод «разделяй и властвуй»
- •11.8. Задачи на применение рекурсии
- •12. РАБОТА С БИТАМИ ПАМЯТИ
- •12.1. Битовые операции
- •12.2. Примеры с использованием битовых операций
- •12.3. Задачи
- •13. РАБОТА С ФАЙЛАМИ
- •13.1. Файлы и потоки
- •13.2. Текстовые файлы
- •13.3. Двоичные файлы
- •13.4. Шифрование файлов
- •13.5. Задачи на текстовые файлы
- •13.6. Задачи на двоичные файлы
- •14. СТРУКТУРЫ ДАННЫХ
- •14.1. Односвязные списки
- •14.2. Примеры работы с односвязными списками
- •14.3. Задачи на односвязные списки
- •14.4. Стеки, очереди
- •14.5. Задачи на стеки и очереди
- •14.6. Двусвязные списки
- •14.7. Задачи на двусвязные списки
- •14.8. Бинарные деревья
- •14.9. Примеры с использованием бинарных деревьев
- •14.10. Задачи на бинарные деревья
- •Приложение 1. АЛГОРИТМЫ ПОИСКА
- •1. Линейный поиск
- •2. Поиск с барьером
- •3. Двоичный поиск
- •Приложение 2. АЛГОРИТМЫ СОРТИРОВКИ
- •Несколько слов о сложности алгоритмов
- •1. Метод прямого выбора
- •2. Метод прямого включения
- •3. Пузырьковая сортировка
- •4. Шейкерная сортировка
- •5. Быстрая сортировка
- •6. Сортировка подсчетом
- •Приложение 3. СОРТИРОВКА ИНДЕКСОВ И УКАЗАТЕЛЕЙ
- •1. Сортировка индексов на основе метода прямого выбора
- •2. Сортировка индексов на основе пузырьковой сортировки
- •3. Сортировка индексов на основе быстрой сортировки
- •4. Сортировка двумерных массивов
- •5. Сортировка строк
- •Приложение 4. СОРТИРОВКА ФАЙЛОВ И СПИСКОВ
- •1. Сортировка двоичных файлов
- •2. Сортировка линейных списков
- •Приложение 5. СОРТИРОВКА С УСЛОВИЕМ
- •1. Сортировка с условием на базе пузырьковой сортировки
- •2. Сортировка с условием на базе быстрой сортировки
- •3. Сортировка с условием двоичных файлов
- •4. Сортировка с условием линейного списка на базе пузырьковой сортировки
- •5. Сортировка с условием линейного списка на базе быстрой сортировки
- •ЛИТЕРАТУРА
int i0, j0, size;
for(size = 1; size <= n; size++) for(i0 = 0; i0 < n - size + 1; i0++)
for(j0 = 0; j0 < n - size + 1; j0++) Print(a, i0, j0, size);
}
int main()
{
int a[N][N];
…/* инициализация матрицы a */ SubMatrix(a, N);
return 0;
}
6.3.Задачи
1.Дана матрица размером m × n. Найти суммы элементов всех ее четных строк.
2.Дана матрица размером m × n. Найти минимальное значение среди сумм элементов всех ее столбцов и номер столбца с этим минимальным значением.
3.Найти минимальный элемент среди максимальных элементов каждой строки матрицы.
4.Вывести номер первой строки матрицы, содержащей равное количество положительных и отрицательных элементов, причем нулевые элементы не учитываются.
5.Найти количество строк матрицы, все элементы которых различны.
6.Дана квадратная матрица порядка n. Найти сумму элементов ее главной и обратной диагоналей.
7.Дана квадратная матрица порядка n. Требуется транспонировать данную матрицу.
8.Дана квадратная матрица порядка n. Найти суммы элементов
еедиагоналей, параллельных главной, начиная с одноэлементной диагонали.
78
9.Дана квадратная матрица порядка n. Заменить нулями элементы, лежащие одновременно выше главной и обратной диагоналей.
10.Удалить все столбцы матрицы, содержащие только положительные элементы.
11.Найти все различные элементы целочисленной квадратной матрицы.
12.Дана матрица. Написать программу, которая упорядочивает строки этой матрицы по возрастанию сумм элементов ее строк.
13.Дана матрица размером m × n, где m и n – четные числа. Поменять местами левую верхнюю и правую нижнюю четверти матрицы.
14.Напечатать все элементы матрицы с их индексами, являющиеся максимальными в своей строке и минимальными в своем столбце.
15.Две строки матрицы назовем эквивалентными, если совпадают множества элементов, встречающихся в этих строках. Найти количество строк, эквивалентных нулевой строке.
Задачи для самостоятельной работы
16.Найти минимальное значение в каждом столбце матрицы.
17.Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке.
18.Вывести номер первой строки матрицы, которая содержит максимальное количество одинаковых элементов.
19.Дана вещественная квадратная матрица порядка n. Составить программу вычисления суммы элементов, расположенных выше главной и ниже обратной диагоналей.
20.Найти максимальный элемент матрицы. Переставляя ее строки и столбцы, добиться того, чтобы максимальный элемент оказался в левом верхнем углу матрицы.
21.Составить программу нахождения числа строк матрицы, минимальный элемент которых отрицательный.
22.Составить программу нахождения минимального из всех положительных элементов в каждом столбце матрицы.
23.Заменить наименьший элемент каждой строки матрицы, начиная со второй, наибольшим элементом предыдущей строки.
79
24.Задана квадратная матрица порядка n. Исключить из нее строку и столбец, на пересечении которых расположен минимальный элемент главной диагонали.
25.Определить, есть ли в массиве размером m × n одинаковые строки.
26.Определить, является ли массив магическим квадратом, то есть совпадает ли в нем сумма каждой строки, каждого столбца и двух диагоналей.
27.Дана целочисленная матрица. Найти номер первого из ее столбцов, содержащих только нечетные числа.
28.Написать программу, которая упорядочивает строки матрицы по возрастанию минимальных элементов ее строк.
80