
- •Часть 1
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •Часть 2 __184__
- •Содержание дисциплины
- •1. Индивидуальные практические занятия, их характеристика
- •2. Контрольные работы, их характеристика
- •3. Курсовой проект, его характеристика
- •4. Литература
- •4.1. Основная
- •4.2. Дополнительная
- •5. Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •Протокол согласования учЕбной программы по изучаемой учебной дисциплине с другими дисциплинами специальности
- •Теоретический раздел Введение
- •1. Основные типы данных
- •1.1. Общие сведения
- •1.2. Данные типа int
- •1.3. Данные типа char
- •1.4. Модификаторы доступа const и volatile
- •1.5. Данные вещественного типа (с плавающей точкой)
- •1.6. Элементарный ввод-вывод
- •1.7. Структура простой программы на языке Си
- •2. Операции и выражения
- •2.1. Выражение и его интерпретация
- •2.2. Основные операции
- •2.2.1. Арифметические операции
- •2.2.2. Побитовые логические операции
- •2.2.3. Операции сдвига
- •2.2.4. Операция присваивания
- •2.2.5. Операция sizeof
- •2.2.6. Преобразование типов в выражениях
- •2.2.7. Операция преобразования типов
- •2.2.8. Приоритеты в языке Си
- •3. Операторы управления вычислительным процессом
- •3.1. Оператор if
- •3.2. Операции отношения
- •3.3. Логические операции
- •3.4. Операция запятая
- •3.5. Операция условия ?:
- •3.6. Оператор безусловного перехода goto
- •3.7. Оператор switch
- •`` ` `3.8. Операторы цикла
- •3.8.1. Оператор for
- •3.8.2. Оператор while
- •3.8.3. Оператор do...While
- •3.9. Оператор break
- •3.10. Оператор continue
- •4. Массивы и указатели
- •4.1. Одномерные массивы и их инициализация
- •4.2. Многомерные массивы и их инициализация
- •4.3. Объявление указателей
- •4.4. Операции над указателями
- •1) Взятие адреса
- •2) Косвенная адресация или разыменование указателя
- •3) Увеличение или уменьшение значения указателя на целое число
- •4) Разность указателей
- •5) Сравнение указателей
- •6) Присваивание указателей друг другу
- •4.6. Связь между указателями и массивами
- •4.7. Динамическое распределение памяти
- •4.8. Массивы указателей
- •5. Функции
- •5.1. Общие сведения
- •5.2. Область видимости переменных
- •5.2.1. Локальные переменные
- •5.2.2. Глобальные переменные
- •5.3. Передача параметров в функцию
- •5.4. Рекурсивные функции
- •5.5. Использование функций в качестве параметров функций
- •5.6. Указатели на функции
- •5.7. Структура программы на Си
- •5.8. Передача параметров в функцию main()
- •6. Строки
- •7. Классы хранения и видимость переменных
- •7.1. Общие сведения
- •7.2. Автоматический класс хранения (auto)
- •7.3. Регистровый класс хранения (register)
- •7.4. Статический класс хранения (static)
- •7.5. Внешний класс хранения (extern)
- •7.6. Заключение
- •8. Структуры, объединения и перечисления
- •8.1. Общие сведения
- •8.2. Инициализация структурных переменных
- •8.3. Вложенные структуры
- •8.4. Указатели на структуры
- •8.5. Массивы структурных переменных
- •8.6. Передача функциям структурных переменных
- •8.7. Оператор typedef
- •8.8. Поля битов в структурах
- •8.9. Объединения
- •8.10. Перечисления
- •9. Динамические структуры данных
- •9.1. Общие сведения
- •9.2. Связные списки
- •9.2.1. Односвязные списки
- •9.2.2. Двусвязные списки
- •9.2.3. Циклические списки
- •9.3. Стеки
- •9.4. Очереди
- •9.5. Деревья
- •9.5.1. Понятие графа
- •9.5.2. Бинарные деревья
- •10. Файлы
- •10.1. Общие сведения
- •10.2. Открытие и закрытие файлов
- •10.3. Функции ввода-вывода для работы с текстовыми файлами
- •10.4. Произвольный доступ к файлу
- •10.5. Функции ввода-вывода для работы с бинарными файлами
- •11. Директивы препроцессора
- •11.1. Основные понятия
- •11.2. Директива #include
- •11.3. Директивы препроцессора #define и #undef
- •11.3.1. Символические константы
- •11.3.2. Макросы с параметрами
- •11.3.3. Директива #undef
- •11.4. Условная компиляция
- •11.5. Директивы # и ##
- •12. Модульное программирование
- •13. Введение в объектно-ориентированное программирование
- •13.1. Постановка задачи
- •13.2. Решение задачи средствами Си
- •13.5. Наследование
- •13.6. Перегрузка
- •13.7. Ссылочный тип
- •Литература
- •Приложение 1. Рекомендации по оформлению текстов программ
- •Тесты к теоретическому разделу Вопросы к разделу 1. Основные типы данных
- •Вопросы к разделу 2. Операции и выражения
- •Вопросы к разделу 3. Операторы управления вычислительным процессом
- •Вопросы к разделу 4. Массивы и указатели
- •Вопросы к разделу 5. Функции
- •Вопросы к разделу 6. Строки
- •Вопросы к разделу 7. Классы хранения и видимость переменных
- •Вопросы к разделу 8. Структуры, объединения и перечисления
- •Вопросы к разделу 9. Динамические структуры данных
- •Вопросы к разделу 10. Файлы
- •Вопросы к разделу 11. Директивы препроцессора
- •Вопросы к разделу 12. Модульное программирование
- •Вопросы к разделу 13. Введение в ооп
- •Правильные ответы на вопросы тестов к теоретическому разделу
- •Вопросы к теоретическому зачету
- •Варианты индивидуальных заданий
- •Контрольная работа №2
- •Варианты индивидуальных заданий
- •Индивидуальные практические работы Указания к выбору варианта индивидуальных практических работ
- •Индивидуальная практическая работа № 1. Массивы и строки
- •Варианты индивидуальных заданий
- •Индивидуальная практическая работа № 2. Динамические структуры данных
- •Варианты индивидуальных заданий
Индивидуальные практические работы Указания к выбору варианта индивидуальных практических работ
Номер вашего варианта равен: 1 плюс остаток от целочисленного деления номера вашей зачетной книжки (его двух последних цифр, стоящих после дефиса) на тридцать.
Индивидуальная практическая работа № 1. Массивы и строки
Цель работы: изучить работу с массивами и строками.
Варианты индивидуальных заданий
1. Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.
2. В матрице 6*6 упорядочить элементы в каждой строке по убыванию, а строки матрицы расположить по возрастанию суммы элементов строк.
3. В данной действительной квадратной матрице порядка 5*5 найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.
4. В данной действительной матрице размером 5*5 поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственны.
5. В матрице А(6,6) путем перестановки строк и столбцов поместить максимальный элемент на место элемента А(1,1).
6. Расположить элементы столбцов матрица А(6,6) в порядке возрастания, если номера столбцов четные, в порядке убывания, если нечетные.
7. Ввести матрицу 5*5. Найти столбец с наименьшей суммой элементов и строку с наибольшей суммой элементов.
8. Ввести матрицу 5*5. Найти, сколько раз встречается каждый элемент.
9. Ввести матрицу 5*5. Упорядочить строки этой матрицы по возрастанию значений сумм их элементов.
10. Ввести матрицу 5*5. Упорядочить столбцы этой матрицы по убыванию сумм их элементов.
11. Дана матрица размером 6*6. Найти сумму наименьших элементов ее нечетных строк и наибольших элементов ее четных строк.
12. Составить программу обмена в матрице А(10,10) элементов, находящихся на главной диагонали, с соответствующими элементами первого столбца.
13. Дана матрица размером 6*6. Среди элементов этой матрицы нет нулей и единиц. Заменить элементы, встречающиеся несколько раз, единицами, а неповторяющиеся – нулями. Подсчитать количество единиц и нулей в каждой строке и столбце.
14. Дана матрица размером 6*6. В каждой ее строке переставить максимальный и минимальный элементы.
15. Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.
16. Проверить, является ли выражение, состоящее из прописных и строчных букв заданной строки, палиндромом (т.е. читающееся слева направо и справа налево одинаково, например, «кабак»). Если да, то напечатать полученный палиндром. В противном случае вывести строку, состоящую из символов исходной строки с удаленными прописными символами.
17. Ввести с клавиатуры строку символов. Программа должна определить длину введенной строки, и если длина кратна 4, то первая часть строки меняется местами со второй.
18. В строке символов поменять местами символы на четных и нечетных позициях.
19. С клавиатуры вводится предложение, слова в котором разделены символом подчеркивания. Напечатайте все предложения, которые получаются при перестановке слов исходного предложения.
Пример:
Исходное предложение: КОШКА_СЪЕЛА_МЫШКУ
Перестановки: СЪЕЛА_КОШКА_МЫШКУ
МЫШКУ_СЪЕЛА_КОШКА
КОШКА_МЫШКУ_СЪЕЛА
…
20. С клавиатуры вводится предложение, слова в котором разделены символом подчеркивания. Подсчитайте число вхождений в предложение используемых букв. Результат записать в строку (парами: буква-цифра) и напечатать ее.
Пример:
Введите предложение: КАРАБАС_БАРАБАС
Результат: А6Б3К1Р2С2
21. Текст состоит из слов разной длины. Определить, сколько раз в тексте встречается заданное слово.
22. В тексте поменять слова местами (первое с последним, второе с предпоследним и т.д.). Слова имеют разную длину.
23. Вывести на экран самое длинное слово из заданного текста.
24. Имеется строка, содержащая буквы и цифры. Преобразуйте эту строку так, чтобы сначала в ней шли все буквы, встречающееся в исходной строке, но в обратном порядке, а потом – все цифры исходной строки в прямом порядке. Например,
Исходная строка Результат
ad2e76b8 beda2768
25. Ввести строки длиной М и К символов (К< М). Удалить из первой строки все знаки, входящие во вторую строку, и сдвинуть все символы первой строки влево.
26. Даны переменные М, N и строки А и В. В строке А заменить символы, начиная с М-го, на первые N символов строки В.
27. С клавиатуры вводится строка. Выберите из нее все буквы от А(а) до I(i) (строчные преобразуйте в прописные) и отсортируйте их в алфавитном порядке. Например,
Исходная строка: SHiFROVkaOtSHPIonA
Результат: AAFHHII
28. Пусть задано некоторое слово. Напечатать просмотр этого слова слева направо до тех пор, пока не встретятся повторяющиеся буквы. Если такие буквы встретились, пропустить их и продолжить просмотр с конца слова в обратном порядке (справа налево), пока снова не встретится набор повторяющихся букв. Если такой набор встретился, продолжить просмотр с того места, которое следует за первым набором повторяющихся букв и т.д. «Протокол» просмотра строки вывести на экран; вместо последовательности повторяющихся букв выводить один символ подчеркивания.
Пример:
Исходное слово: НОННИЛЛИОН
«Протокол» просмотра: НО_НОИ_И
29. Найти в исходной строке все вхождения (но не более девяти) заданной подстроки и заменить их на другую строку с указанием номера очередного вхождения.
Пример:
Исходная строка: ПОЛИЛИ_ЛИЛИЮ
Какую подстроку заменить: ЛИ
На какую подстроку заменить: СТО
Результат: ПОСТО1СТО2_СТО3СТО4Ю
30. Зашифруйте вводимое с клавиатуры предложение следующим образом: сначала выбираются два произвольных слова из базы, находящейся в тексте программы или вводимой с клавиатуры, затем слово из шифруемого предложения, потом опять два слова из базы, после чего – опять слово из предложения и т.д. “База” – набор слов, допустимых при выполнении программы, либо набор пар слов, как в приведенном ниже примере.
Пример:
Шифруемое предложение:
ДЕЛО_ЗАКОНЧЕНО_ХАДСОН_РАССКАЗАЛ_ВСЕ_БЕРЕГИТЕСЬ
База шифра:
С_ДИЧЬЮ_Я_ПОЛАГАЮ_ГЛАВА_ПРЕДПРИЯТИЯ_ПО_
СВЕДЕНИЯМ_О_МУХОБОЙКАХ_ФАЗАНЬИХ_КУРОЧЕК
Результат шифровки:
С_ДИЧЬЮ_ДЕЛО_Я_ПОЛАГАЮ_ЗАКОНЧЕНО_ГЛАВА_
ПРЕДПРИЯТИЯ_ХАДСОН_ПО_СВЕДЕНИЯМ_РАССКАЗАЛ_ О_МУХОБОЙКАХ_ВСЕ_ФАЗАНЬИХ_КУРОЧЕК_БЕРЕГИТЕСЬ