- •11. Операторы. Дополнение 135
- •12. Передача данных потоком 145
- •13. Файлы 149
- •14. Структура программы 157
- •15. Указатели, массивы, строки 170
- •16. Работа с экраhом 179
- •Задачи 185
- •Приложения 197
- •Библиографический список 224 введение
- •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. Выражения
- •4.1. Арифметические операторы Основные
- •Дополнительные
- •Приоритет
- •4.2. Операторы конкатенации
- •4.3. Операторы сравнения
- •4.4. Логические операторы
- •4.5. Обращение к функции
- •4.6. Встроенные функции
- •4.7. Заключительные замечания
- •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 и continue
- •5.8. Многоальтернативный выбор
- •5.8.1. Инструкция switch (язык с)
- •5.8.2. Инструкция select case (язык Basic)
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •6. Ввод-вывод
- •6.1. Язык Си
- •6.1.1. Управляющая строка
- •6.1.1.1. Спецификация d (целые десятичные числа)
- •6.1.1.2. Спецификация f (десятичные числа с плавающей точкой)
- •6.1.1.3. Спецификация e (десятичные числа с плавающей точкой)
- •6.1.1.4. Спецификация g (универсальная спецификация)
- •6.1.2. Вывод символьной информации
- •6.1.3. Инструкции printf и scanf. Схема ввода-вывода
- •6.2. Язык Basic
- •6.2.1. Метод ReadLine
- •6.2.2. Методы Write и WriteLine
- •7.1.1. Распределение скаляров
- •7 .1.2. Распределение массивов
- •7.1.3. Статическое и динамическое распределение памяти
- •7.2. Блоки
- •7.3. Процедуры
- •7.3.1. Определения процедур
- •Прототипы функций (c)
- •7.3.2. Передача данных между процедурами
- •Механизмы передачи данных
- •Передача скаляров Возвращаемое значение
- •Входные данные
- •Выходные данные
- •Передача массивов
- •Передача функций
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •8. Препроцессор
- •8.1. Определение символических констант
- •8.2. Включение файлов в текст программы
- •9.1. Формирование листинга
- •Перенос:
- •9.2. Комментарии
- •9.3. Имена Имена объектов программы должны быть осмысленными.
- •3. Литералы.
- •9. Ввод-вывод:
- •10.5. Подмассивы (сечения) (c)
- •10.6. Динамические массивы (b)
- •10.7. Структуры и объединения
- •10.7.1. Структуры
- •10.7.3. Поля битов (с)
- •10.7.4. Объединения (смеси) (с)
- •10.7.5. Переменные структуры
- •10.10. Пользовательские типы данных
- •10.11. Преобразование типов
- •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.1. Основные понятия
- •13.2. Описание файла
- •13.3. Открытие и закрытие файлов
- •13.4. Средства языка с
- •13.4.1. Открытие и закрытие файла
- •13.4.2. Основные функции обмена
- •13.5. Средства языка Basic
- •13.5.1. Открытие и закрытие файла Инструкция FileOpen
- •Инструкция FileClose
- •13.5.2. Работа с файлами Инструкция Input
- •Инструкция LineInput
- •Инструкции Write и WriteLine
- •Инструкции Print и PrintLine
- •Дополнительные функции
- •Функция MsgBox
- •14.1. Элементы структуры программы.
- •14.1.2. Язык Basic
- •14.2. Область видимости (действия) и время жизни переменных
- •14.2.1. Язык c
- •14.2.2. Язык Basic
- •14.3. Инициализация данных
- •14.3.1. Язык с
- •2. Массивы.
- •15.1. Указатели
- •Определение указателей
- •Задание значений
- •Вывод значений
- •15.2. Указатели и массивы
- •15.3. Работа со строками
- •15.3.1. Литералы
- •15.3.2. Переменные
- •15.3.3. Операторы и функции
- •15.4. Динамические объекты
- •15.5. Типичные ошибки, связанные с указателями Отсутствие инициализации указателя
- •Двойное указание
- •15.6.2. Однонаправленный список
- •15.7. Указатели и многомерные массивы
- •15.8. Рекурсивные процедуры
- •15.8.1. Рекурсивное решение
- •15.8.2. Нерекурсивное решение. Стек в виде массива
- •15.8.3. Нерекурсивное решение. Стек в виде списка
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •16. Работа с экраhом
- •16.2. Управление окном
- •16.3. Управление атрибутом (цветами символа и фона в окне)
- •16.4. Информация о текстовом режиме
- •16.5. Пример
- •Простые циклы
- •Вложенные циклы
- •Процедуры
- •Работа со строками
- •Приложения
- •П1.1. Установка среды
- •П1.2. Запуск среды
- •П1.3. Меню Файл
- •П1.4. Меню Сервис
- •П1.5. Отладка
- •Начало отладки
- •Установка точек прерывания
- •Прогон до точки прерывания
- •Пошаговое выполнение программы
- •Получение значений объектов программы
- •Приложение 2. Среда разработки Visual Basic п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. Работа с экраном
- •Приложение 4. Темы для курсовой работы
- •Библиографический список
Процедуры
Все решения в зависимости от условия задачи оформить в виде функции или подпрограммы.
1. Даны 2 натуральных числа n и m(m<=n). Определить сумму m последних цифр числа n.
2. Известны данные о среднесуточной температуре за каждый день месяца. Определить:
- количество дней, когда температура была ниже 00C;
- среднюю температуру месяца.
3. Даны 4 числа, большие 0. Выяснить, можно ли построить четырехугольник с такими длинами сторон.
4. Определить, является ли заданное натуральное число степенью двойки.
5. Дана матрица {aij}, i =1...m, j = 1...n. Сформировать массив {bi}, i = 1...m, где bi равно числу перемен знака в i-й строке.
6. Найти коэффициенты частного: c0+c1x+...+cn-1xn-1 = (a0+a1x+...anxn) / (b0+b1x).
7. Дана матрица {aij}, i =1...s j = 1...t. Найти максимальное расстояние между строками матрицы. Расстояние Rmn определяется по формуле: |k – l|, где k - № столбца, где расположен максимальный элемент m-й строки, l - № столбца, где расположен максимальный элемент n-й строки. Если таких элементов в строке несколько, то взять первый из них.
8. Дана целая матрица {aij}, i =1...m, j = 1...n. Найти № строки, для которой максимальное число подряд стоящих равных элементов максимально. Если таких строк несколько, то взять последнюю из них.
9. По заданному натуральному числу n определить, является ли число "счастливым". "Счастливым" называют число, состоящее из 2m цифр, у которого сумма первых m цифр равна сумме последних m цифр. Пример. 256193.
10. Дана матрица {aij}, i =1...m, j = 1...n и целые значения k и l. Преобразовать матрицу так, чтобы строка с номером l непосредственно располагалась за строкой с номером k с сохранением порядка следования остальных строк.
11. Дан массив: {xi}, i = 1...n. Переменной L присвоить значение 1, если отрицательные и неотрицательные элементы массива в порядке их следования образуют неубывающую последовательность, 0, если хотя бы одна из этих последовательностей – неубывающая, -1 – в оставшемся случае.
12. Дан массив: {xi}, i = 1...n. Отсортировать его элементы по возрастанию значений методом простых вставок /9, с.105 /.
13. Дана матрица {aij}, i =1...2m, j = 1...2n. Она разбита на 4 неперекрывающихся блока размером m*n. Перестроить матрицу, переставляя блоки по часовой стрелке с сохранением порядка следования элементов. Вспомогательный массив не использовать.
14. Дан массив: {xi}, i = 1...n, целое значение k и произвольное значение R. Элементы массива удовлетворяют условию: xi<=xi+1, i = 1...n-1. Исключить из него элемент с №, равным k, и вставить в него значение R так, чтобы не нарушить условие.
15. Дана матрица {aij}, i =1...m, 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 и {yj}, j = 1...m, упорядоченных по неубыванию. Составить из них массив: {ck}, k = 1...m+n, также упорядоченный по неубыванию.
20. Даны упорядоченный по неубыванию массив: {xi}, i = 1...n и произвольный массив: {yj}, j = 1...m. Слить их в одну упорядоченную по неубыванию последовательность значений: {ck}, k = 1...m+n, скопировав в нее сначала массив x и перенося затем по очереди на нужное место элементы массива y.
21. Дан массив: {xi}, i = 1...n. Перестроить его так: расположить сначала все неотрицательные элементы, затем все отрицательные в порядке их следования в исходном массиве. Вспомогательный массив не использовать.
22. Даны 2 матрицы: {aik}, i =1...m, k = 1...n и {bkj}, k =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, если отрицательный элемент в массиве z встретится не позднее, чем в массивах x и y, и значение false – в противном случае.
24. Расстояние между двумя множествами точек – это расстояние между двумя наиболее близко расположенными точками этих множеств. Найти расстояние между двумя заданными множествами точек на плоскости.
25. Часовая стрелка образует угол с лучом, проходящим через центр и через точку, соответствующую 12 часам на циферблате. Определить значение угла для минутной стрелки, а также количество часов и полных минут.
26. Дано время в виде (h, m), где h – число часов, m – число минут. Определить наименьшее число полных минут, через которое часовая и минутная стрелки совпадут.
27. По заданной строке символов, представляющей собой шестнадцатиричную запись положительного целого числа, определить его десятичное значение.
28. Дан целый массив: {xi}, i = 1...n. Определить, является ли эта последовательность чисел периодической, т.е. может ли она быть получено повторением некоторой своей начальной части. Из всех возможных периодов указать наименьший.
29. Найти все простые несократимые дроби, т.е лежащие в диапазоне (0,1), знаменатель которых не превышает 7. Использовать процедуру нахождения наибольшего общего делителя(НОД).
30. Дана целая матрица {aij}, i =1...m, j = 1...n., состоящая из нулей и единиц. Элемент матрицы равен 1, если на клеточном поле того же размера клетка принадлежит нарисованному на поле прямоугольнику, и равен 0, если нет. Прямоугольники не пересекаются и не касаются друг друга. Найти их количество.
31. Построить матрицу {aij}, i =1...n, j = 1...n, содержащую все простые числа в порядке возрастания.
32. Дано натуральное число n. Определить, имеются ли среди чисел n+1, n+2, …, 2n "близнецы", т.е. простые числа, разница между которыми равна 2.
