- •Оглавление
- •6. Ввод-вывод 52
- •11. Операторы. Дополнение 93
- •12. Передача данных потоком 100
- •13. Файлы 103
- •14. Структура программы 109
- •15. Указатели, массивы, строки 118
- •16. Работа с экраhом 137
- •17. Управление программой с помощью клавиатуры 151
- •Введение
- •1. Основные понятия и определения
- •1.1. Компьютер
- •Процессор
- •Периферия
- •1.2. Алгоритмы
- •1.3. Программы и языки
- •Основные понятия языка программирования
- •Выполнение программы
- •Машинный и алгоритмический языки
- •Метаобозначения
- •Этапы обработки программы на компьютере
- •Терминология
- •Трансляция
- •Редактирование связей (компоновка)
- •Загрузка
- •1.4. Данные
- •Системы счисления
- •Типы и совокупности данных.
- •Вещественные
- •Логические
- •Совокупности данных
- •2. Элементы языка
- •2.1. История языков с и Basic
- •2.2. Алфавит
- •2.3. Идентификаторы
- •2.4. Знаки разрядки
- •2.5. Комментарии
- •2.6. Запись текста программы
- •3.1.1. Целые
- •3.1.2. Данные с плавающей точкой
- •3.1.3. Логический тип
- •3.1.4. Символьные данные
- •3.1.5. Дополнительные типы данных
- •3.2. Совокупности данных
- •3.2.1. Массивы
- •Объявления массивов
- •Обращение к элементу массива
- •3.2.2. Структуры
- •4.1. Арифметические операторы Основные
- •Дополнительные
- •Приоритет
- •4.2. Операторы конкатенации
- •4.3. Операторы сравнения
- •4.4. Логические операторы
- •4.5. Обращение к функции
- •4.6. Встроенные функции
- •4.7. Заключительные замечания
- •5.1. Объявления
- •5.2. Присваивание
- •5.3. Безусловный переход
- •5.4. Инструкция If. Пустая инструкция
- •5.5. Составная инструкция
- •5.6. Циклы
- •5.6.1. Циклы с предусловием
- •Циклы while
- •Циклы for
- •5.6.2. Циклы с постусловием
- •5.6.3. Вложенные циклы
- •5.7. Управляемые переходы
- •5.7.1. Инструкция break
- •5.7.2. Инструкция continue
- •5.7.3. Инструкции exit
- •5.8. Многоальтернативный выбор
- •5.8.1. Инструкция switch (язык с)
- •5.8.2. Инструкция select case (язык Basic)
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •6. Ввод-вывод
- •6.1. Управляющая строка
- •6.1.1. Спецификация d (целые десятичные числа)
- •6.1.2. Спецификация f (десятичные числа с плавающей точкой)
- •6.1.3. Спецификация e (десятичные числа с плавающей точкой)
- •6.1.4. Спецификация g (универсальная спецификация)
- •6.1.5. Вывод символьной информации
- •6.2. Инструкции printf и scanf. Схема ввода-вывода
- •7.1.1. Распределение скаляров
- •7.1.2. Распределение массивов
- •7.1.3. Статическое и динамическое распределение памяти
- •7.2. Блоки
- •7.3. Процедуры
- •7.3.1. Определения процедур
- •7.3.2. Связь между вызывающей и вызываемой функциями
- •Механизмы передачи данных
- •Прототипы функций (c)
- •Передача скаляров Возвращаемое значение
- •Входные данные
- •Выходные данные
- •Передача массивов
- •Передача функций
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •8. Препроцессор
- •8.1. Определение символических констант
- •8.2. Включение файлов в текст программы
- •9.1. Формирование листинга
- •Перенос:
- •9.2. Комментарии
- •9.3. Имена Имена объектов программы должны быть осмысленными.
- •3. Литералы.
- •10.5. Подмассивы (сечения) (c)
- •10.6. Динамические массивы (b)
- •10.7. Структуры и объединения (c)
- •10.7.1. Структуры
- •10.7.2. Рекурсивные структуры
- •10.7.3. Поля битов
- •10.7.4. Объединения (смеси)
- •10.7.5. Переменные структуры
- •10.9. Пользовательские типы данных
- •10.9.1. Инструкция type (b)
- •10.9.2. Инструкция typedef (c)
- •10.10. Преобразование типов
- •10.10.1. Автоматические преобразования
- •10.10.2. Явные преобразования
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •11. Операторы. Дополнение
- •11.1. Уровень 1
- •11.2. Уровень 2 (унарные или одноместные операторы)
- •11.3. Уровень 3 (мультипликативные операторы)
- •11.4. Уровень 4 (аддитивные операторы)
- •11.5. Уровень 5 (сдвиги)
- •11.6. Уровень 6 (отношения)
- •11.7. Уровень 7 (равенство и неравенство)
- •11.8. Поразрядные операторы
- •11.9. Логические операторы
- •11.10. Уровень 13 (условное выражение)
- •11.11. Уровень 14 (операторы присваивания)
- •11.12. Уровень 15 (оператор ',' - запятая)
- •11.13. Некоторые замечания
- •11.14. Постоянные выражения
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •12. Передача данных потоком
- •12.1. Спецификация "s" управляющей строки функций scanf и printf
- •12.2. Функции getchar и putchar
- •12.3. Функции gets и puts
- •12.4. Внутренняя передача данных (функции sscanf и sprintf)
- •13.2. Описание файла
- •13.3. Открытие и закрытие файлов
- •13.4. Средства языка с
- •13.4.1. Открытие и закрытие файла
- •13.4.2. Основные функции обмена
- •13.5. Средства языка Basic
- •13.5.1. Открытие и закрытие файла Инструкция open
- •Инструкция close
- •13.5.2. Работа с файлами Инструкция input
- •Функция input
- •Инструкция line input
- •Инструкция write
- •Инструкция print
- •Инструкция width
- •Длина файла
- •Функция MsgBox
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •14. Структура программы
- •14.1. Элементы структуры программы.
- •14.1.1. Язык c
- •14.1.2. Язык Basic
- •14.2. Область видимости (действия) и время жизни переменных
- •14.2.1. Язык c
- •14.2.2. Язык Basic
- •14.3. Проект программы
- •14.3.1. Использование директивы препроцессора #include
- •14.3.2. Средства управления проектом
- •14.4. Инициализация данных
- •2. Массивы.
- •15.1. Указатели
- •Определение указателей
- •Задание значений
- •Вывод значений
- •15.2. Указатели и массивы
- •15.3. Работа со строками
- •15.3.1. Литералы
- •15.3.2. Переменные
- •15.3.3. Операторы и функции
- •15.4. Динамические объекты
- •15.5. Типичные ошибки, связанные с указателями Отсутствие инициализации указателя
- •Двойное указание
- •Hе выполнено освобождение выделенной памяти
- •Задание адреса локальной (auto) переменной
- •15.6. Примеры использования указателей. Структуры данных
- •15.6.1. Стек
- •15.6.2. Однонаправленный список
- •15.7. Ссылки и многомерные массивы
- •15.8. Рекурсивные процедуры
- •15.8.1. Рекурсивное решение
- •15.8.2. Нерекурсивное решение. Стек в виде массива
- •15.8.3. Нерекурсивное решение. Стек в виде списка
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •16. Работа с экраhом
- •16.1. Текстовый режим(textmode)
- •16.1.2. Управление режимом и окном
- •16.1.3. Управление атрибутом(цветами символа и фона в окне)
- •16.1.4. Информация о текстовом режиме
- •16.1.5. Пример
- •16.1.6. Пример(продолжение)
- •16.2. Графический режим
- •16.2.1. Установка и закрытие
- •16.2.2. Форматирование Цвета
- •Битовые образы(pattern)
- •Текстовые фонты
- •Восстановление установок по умолчанию
- •16.2.3. Размещение на экране Окна
- •Координаты курсора и перемещения
- •16.2.4. Вывод на экран Текст
- •Прямоугольники
- •Эллипсы
- •Многоугольники
- •Пиксели
- •16.2.5. Дополнительные функции
- •Простые циклы
- •Вложенные циклы
- •Процедуры
- •Работа со строками
- •Приложения
- •П1.1. Меню File (Файл)
- •П1.2. Меню Options (Установки среды)
- •П1.3. Разное
- •П1.4. Редактирование текста
- •П1.5. Сообщения
- •Трансляция
- •Компоновка (редактирование связей)
- •Ошибки времени выполнения
- •П1.6. Отладка
- •Прогон до точки прерывания
- •Пошаговое выполнение программы
- •Установка точек прерывания
- •Получение значений объектов программы
- •П1.7. Окна
- •Управление окнами
- •Приложение 2. Среда разработки Visual Basic Express
- •П2.1. Запуск среды
- •П 2.2. Подготовка к работе с новым проектом
- •П2.3. Окна и режимы работы
- •П2.4. Главное меню
- •П2.5. Меню File (Файл)
- •П2.6. Редактирование текста
- •П2.7. Меню View (Обзор)
- •П2.8. Меню Project (Проект)
- •П2.9. Отладка
- •Точки прерывания
- •Определение значений объектов программы в момент прерывания
- •Продолжение работы
- •П2.10. Меню Tools (Средства)
- •П2.11. Меню Window (Окно)
- •Приложение 3. Ответы на вопросы для самопроверки
- •2. Элементы языка
- •3. Элементы данных
- •4. Выражения
- •5. Основные инструкции
- •6. Ввод-вывод
- •7. Процедуры
- •8. Препроцессор
- •9. Стиль программирования
- •10. Данные. Дополнение
- •11. Операторы. Дополнение
- •12. Передача данных потоком
- •13. Файлы
- •14. Структура программы
- •15. Указатели, массивы, строки
- •16. Работа с экраном
- •17. Управление программой с помощью клавиатуры
- •Приложение 4. Темы для курсовой работы
- •Библиографический список
Процедуры
Все решения в зависимости от условия задачи оформить в виде функции или подпрограммы.
1. Даны 2 натуральных числа n и m(m<=n). Определить сумму m последних цифр числа n.
2. Известны данные о среднесуточной температуре за каждый день месяца. Определить:
- количество дней, когда температура была ниже 00C;
- среднюю температуру месяца.
3. Даны 4 числа, большие 0. Выяснить, можно ли построить четырехугольник с такими длинами сторон.
4. Определить, является ли заданное натуральное число степенью двойки.
5. Дана матрица {aij}, i =1...10, j = 1...10. Сформировать массив {bi}, i = 1...10, где bi равно числу перемен знака в i-й строке.
6. Найти коэффициенты частного: c0+c1x+...+cn-1xn-1 = (a0+a1x+...anxn)/(b0+b1x).
7. Дана матрица {aij}, i =1...10, j = 1...10. Найти максимальное расстояние между строками матрицы. Расстояние Rmn определяется по формуле: |k – l|, где k - № столбца, где расположен максимальный элемент m-й строки, l - № столбца, где расположен максимальный элемент n-й строки. Если таких элементов в строке несколько, то взять первый из них.
8. Дана целая матрица {aij}, i =1...10, j = 1...10. Найти № строки, для которой максимальное число подряд стоящих равных элементов максимально. Если таких строк несколько, то взять последнюю из них.
9. По заданному натуральному числу n определить, является ли число "счастливым". "Счастливым" называют число, состоящее из 2m цифр, у которого сумма первых m цифр равна сумме последних m цифр. Пример. 256193.
10. Дана матрица {aij}, i =1...10, j = 1...10 и целые значения k и l. Преобразовать матрицу так, чтобы строка с номером l непосредственно располагалась за строкой с номером k с сохранением порядка следования остальных строк.
11. Дан массив: {xi}, i = 1...25. Переменной L присвоить значение 1, если отрицательные и неотрицательные элементы массива в порядке их следования образуют неубывающую последовательность, 0, если хотя бы одна из этих последовательностей – неубывающая, -1 – в оставшемся случае.
12. Дан массив: {xi}, i = 1...n. Отсортировать его элементы по возрастанию значений методом простых вставок /9, с.105 /.
13. Дана матрица {aij}, i =1...2n, j = 1...2n. Она разбита на 4 неперекрывающихся блока размером n*n. Перестроить матрицу, переставляя блоки по часовой стрелке с сохранением порядка следования элементов. Вспомогательный массив не использовать.
14. Дан массив: {xi}, i = 1...n, целое значение k и произвольное значение R. Элементы массива удовлетворяют условию: xi<=xi+1, i = 1...n-1. Исключить из него элемент с №, равным k, и вставить в него значение R так, чтобы не нарушить условие.
15. Дана матрица {aij}, i =1...n, j = 1...n. Найти S = min(max aij) – max(min aij).
i j j i
Вспомогательный массив не использовать.
16. Дан массив: {xi}, i = 1...n. Найти номера начального и конечного элементов последней подпоследовательности положительных элементов.
17. Дано целое значение M. Определить, делиться ли M нацело на 9. Сумма цифр M должна делиться нацело на 9.
18. В соревновании выступление спортсмена оценивают n(n>2) судей. Лучшая и худшая оценки отбрасываются. Среднее арифметическое остальныx и составляет оценку спортсмена. Определить ее.
19. Даны 2 массива: {xi}, i = 1...n и {yi}, i = 1...m, упорядоченных по неубыванию. Составить из них массив: {ck}, k = 1...m+n, также упорядоченный по неубыванию.
20. Даны упорядоченный по неубыванию массив: {xi}, i = 1...n и произвольный массив: {yi}, i = 1...m. Слить их в одну упорядоченную по неубыванию последовательность значений: {ck}, k = 1...m+n, скопировав в нее сначала массив x и перенося затем по очереди на нужное место элементы массива y.
21. Дан массив: {xi}, i = 1...n. Перестроить его по правилу: расположить сначала все неотрицательные элементы, затем все отрицательные в порядке их следования в исходном массиве. Вспомогательный массив не использовать.
22. Даны 2 матрицы: {aij}, i =1...m, j = 1...n и {bij}, i =1...n, j = 1...p. Сформировать матрицу по формуле:
cij = max(min(aik, bkj)), i = 1...m, j = 1...p.
k=1...n
Вспомогательный массив не использовать.
23. Даны 3 массива: {xi}, I=1…l; {yj}, j=1…m; {zk}, k=1…n. Процедура должна вернуть значение true(1), если отрицательный элемент в массиве z встретится не позднее, чем в массивах x и y, и значение false(0) – в противном случае.
24. Расстояние между двумя множествами точек – это расстояние между двумя наиболее близко расположенными точками этих множеств. Найти расстояние между двумя заданными множествами точек на плоскости.
25. Часовая стрелка образует угол с лучом, проходящим через центр и через точку, соответствующую 12 часам на циферблате. Определить значение угла для минутной стрелки, а также количество часов и полных минут.
26. Дано время в виде (h, m), где h – число часов, m – число минут. Определить наименьшее число полных минут, через которое часовая и минутная стрелки совпадут.
27. По заданной строке символов, представляющей собой шестнадцатиричную запись положительного целого числа, определить его десятичное значение.
28. Дан целый массив: {xi}, i = 1...30. Определить, является ли эта последовательность чисел периодической, т.е. может ли она быть получено повторением некоторой своей начальной части. Из всех возможных периодов указать наименьший.
29. Найти все простые несократимые дроби, т.е лежащие в диапазоне (0,1), знаменатель которых не превышает 7. Использовать процедуру нахождения наибольшего общего делителя(НОД).
30. Дана целая матрица {aij}, i =1...10, j = 1...10., состоящая из нулей и единиц. Элемент матрицы равен 1, если на клеточном поле того же размера клетка принадлежит нарисованному на поле прямоугольнику, и равен 0, если нет. Прямоугольники не пересекаются и не касаются друг друга. Найти их количество.
31. Построить матрицу {aij}, i =1...n, j = 1...n, содержащую все простые числа в порядке возрастания.
32. Дано натуральное число n. Определить, имеются ли среди чисел n+1, n+2, …, 2n "близнецы", т.е. простые числа, разница между которыми равна 2.
