- •Предисловие
- •Знакомство с языком C
- •Структура программы
- •Пример простой программы
- •Более сложный пример
- •Контрольные вопросы
- •Основные понятия, объявление переменных, типы данных
- •Объявление переменных
- •Примеры описаний переменных:
- •Основные типы данных
- •Производные типы.
- •Контрольные вопросы
- •Ввод/вывод с помощью функций printf() и scanf().
- •Модификаторы спецификаций преобразования используемые в функции printf()
- •Применение функции scanf()
- •Контрольные вопросы
- •Операции
- •Простейшие арифметические операции
- •Операция присваивания
- •Использование в выражениях операндов разных типов
- •Операции преобразования типов
- •Дополнительные арифметические операции
- •Дополнительные операции присваивания
- •Операции отношения
- •Логические операции
- •Приоритеты операций
- •Таблица 3. Таблица приоритетов рассмотренных выше операций
- •Контрольные вопросы
- •Операторы
- •Оператор-выражение
- •Ветвление
- •Условный оператор
- •Оператор switch
- •Оператор break
- •Циклы
- •Цикл while
- •Цикл do…while
- •Цикл for
- •Другие операторы
- •Оператор continue
- •Оператор goto
- •Оператор вызова функции
- •Контрольные вопросы
- •Обработка числовых последовательностей
- •Последовательная обработка
- •Обработка числовых последовательностей
- •Примеры
- •Контрольные вопросы
- •Последовательная обработка символьных данных
- •Символьные данные
- •Последовательная обработка символов
- •Функции getchar( ) и putchar( )
- •Контрольные вопросы
- •Обработка массивов
- •Массивы
- •Объявление массива
- •Использование и обработка массивов
- •Примеры
- •Контрольные вопросы
- •Указатели и динамические массивы
- •Указатели
- •Динамическое выделение памяти
- •Статические и динамические массивы
- •Контрольные вопросы
- •Подпрограммы
- •Описание подпрограмм
- •Параметры подпрограмм
- •Область действия переменных
- •Примеры
- •Контрольные вопросы
- •Рекурсивные функции
- •Понятие рекурсивной функции
- •Контрольные вопросы
- •Символьные строки и функции обработки строк
- •Посимвольная обработка строк
- •Пример программы
- •Контрольные вопросы
- •Структуры
- •Тип данных структура
- •Контрольные вопросы
- •Работа с файлами
- •Примеры
- •Контрольные вопросы
- •Массивы и функции как параметры
- •Указатели на функции
- •Массивы и указатели
- •Указатели и двумерные массивы
- •Пример
- •Технологии программирования
- •Структурное программирование
- •Модульное программирование
- •Объектно-ориентированное программирование
- •Компонентное программирование
- •Структурная декомпозиция задачи и разработка алгоритмов и программ методами сверху вниз и снизу вверх
- •Контрольные вопросы
- •Модульное программирование
- •Работа с графикой на языке C и модуль graphics.h
- •Типы видео мониторов и их режимы
- •Инициализация графики
- •Система координат
- •Основные графические функции
- •Функции рисования
- •Функции изменения параметров рисования
- •Шаблоны линий
- •Шаблоны закраски
- •Задание на расчетно-графическую работу
- •Порядок выполнения работы
- •Задание
- •Задание для вариантов 1-11
- •Задание для вариантов 12-20
- •Задание для вариантов 21-40
- •Пример исходных данных для вариантов 12-16
- •Задание для вариантов 41-60
- •Варианты индивидуальных заданий
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Вариант 21
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Вариант 31
- •Вариант 32
- •Вариант33
- •Вариант 34
- •Вариант 35
- •Вариант 36
- •Вариант 37
- •Вариант 38
- •Вариант 39
- •Вариант 40
- •Вариант 41
- •Вариант 42
- •Вариант 43
- •Вариант 44
- •Вариант 45
- •Вариант 46
- •Вариант 47
- •Вариант 48
- •Вариант 49
- •Вариант 50
- •Вариант 51
- •Вариант 52
- •Вариант 53
- •Вариант 54
- •Вариант 55
- •Вариант 56
- •Вариант 57
- •Вариант 58
- •Вариант 59
- •Вариант 60
- •Задания на курсовую работу
- •Требования к курсовой работе
- •Этапы разработки программ
- •Содержание отчета по курсовой работе
- •Задания к курсовой работе
- •Литература
- •Функции консольного ввода/вывода
- •Функции обработки строк
- •Функции преобразования данных
Ввод/вывод с помощью функций printf() и scanf().
О том что это функции говорит наличие ( ) – скобок. Обе эти функции работают одинаково – каждая использует управляющую строку и список аргументов. Указанные функции не входят в описание языка Си, т.е. реализация в/в возлагается на создателей компилятора, что даст возможность более эффективно организовать в/в на конкретных машинах. Поэтому на разных машинах ив разных системах типа Турбо-Си, Borland-Си могут быть незначительные отличия.
Рассмотрим функцию
printf (<Упр-я строка>,<арг1>,<арг2>,…);
Управляющая строка заключается в двойные кавычки “ “, является строкой символов, которая печатается. В управляющей строке после специального знака % указывается формат, который зависит от типа переменной указанной в качестве аргумента. Каждому формату соответствует тип вводимой информации:
|
Таблица 1. |
|
Тип вводимой информации |
Формат |
|
|
Десятичное целое число |
%d |
|
|
Один символ |
%c |
|
|
Строка символов |
%s |
|
|
Число с плавающей точкой, экспоненциальная |
%e |
|
|
запись |
|
Число с плавающей точкой, десятичная запись |
%f |
|
|
Используется вместо записей %f или %e,если он |
%g |
|
|
короче |
|
Десятичное целое без знака |
%u |
|
|
Восьмеричное целое без знака |
%o |
|
|
Шестнадцатиричное целое число без знака |
%x |
|
|
|
25
Основными являются первые пять. Пример
pi=3.14159;
e=2.718282;
printf(“число pi=%f ; число e=%f;\n”,pi,e); /*результат следующий */
число pi=3.14159; число e=2.71828;
или
printf(“число p=%f; число e=%f; число pi+e=%f! \n”,pi,e,pi+e);
/*результат */
число pi=3.14159; число e=2.71828 ; число pi+e=5.85987!
Т.о. аргумент1, аргумент2, и т.д. – это печатаемые параметры, кот-е могут быть переменными, константами, и выражениями, вычисляемыми перед выводом на печать.
Управляющая строка содержит информацию двух видов: 1)Символы,печатаемые текстуально(литеральные конст-ты) 2)Спецификации преобразования
n=20;
printf(“в группе %d человек \n”,n);
Литеральные константы могут быть любым набором символов. Каждому аргументу из списка, следующего за управляющей строкой, должна соответствовать одна спецификация преобразования.
В том случае, если литеральные константы должны содержать символ %, то его в управляющей строке нужно указать дважды %%.
stud=10;
printf(“только %d%% студентов учатся на %c\n”,stud,5); /*печать след-я*/ только 10% студентов учатся на 5
26
Модификаторы спецификаций преобразования используемые в функции printf()
Между знаком % и сиволом, определяющим тип преобразования можно поместить модификаторы. К модификаторам относятся:
1)Знак минус - при этом аргумент будет печататься с левой позиции поля заданной ширины. Обычно печать аргумента оканчивается в самой правой позиции поля. Пример %-10в.
2)Строка цифр – задает минимальную ширину поля. При этом, если информация не помещается в указанную ширину поля, то ширина поля увеличивается до необходимых размеров.
3)Строка цифр – определяет точность: для типов данных с плавающей точкой – число печатаемых цифр спрва от десятичной точки; для символьных строк – максимальное число печатаемых символов. Пример %4.2f – две десятичные цифры для поля шириной в четыре символа.
Рассмотрим влияние модификаторов преобразования на печать целого числа:
main()
{
printf(“/%d/\n”,625);
printf(“/%2d/\n”,625);
printf(“/%10d/\n”,625); printf(“/%-10d/\n”,625);
}
Эта программа напечатает 4 раза одно и то же значение. Литеральные константы / / используются, чтобы указать начало и конец поля. Печать будет следующей:
/625/
/625/
/625/
/625 /
В первом случае ширина поля = количеству цифр, т.е. по умолчанию Во втором случае %2d указывает, что ширина поля должна равняться 2, но указанное число не умещается в две позиции, поэтому ширина поля
автоматически увеличивается до необходимого размера. %10d – ширина поля=10.
27
%-10d - ширина поля=10, но число прижимается к левой границе поля.
Для чисел с плавающей точкой:
main()
{
printf(“/%f/\n”,1234.56);
printf(“/e/\n”,1234.56);
printf(“/4.2f/\n”,1234.56);
printf(“/%3.1f/\n”,1234.56);
printf(“/%10.3f/\n”,1234.56);
printf(“/%10.3e/\n”,1234.56);
}
Результат будет следующим:
/1234.560059/ /1.234560Е+03/ /1234.56/ /1234.6/
/1234.560/
/1.234Е+03/
Впервом случае имеются 2 величины, значения которых используются
по умолчанию: ширина поля и число цифр справа от десятичной точки. 2-я величина задает 6 цифр, а ширина берется такой, чтобы в нем могло поместится число.
Во втором случае по умолчанию спецификации е слева от десятичной точки печатается одна цифра, справа – шесть.
Рассмотрим варианты строк:
# define const “КГТУ – пуп земли!” /*здесь 15 символов, включая пробелы*/
main()
{
printf(“/%2s/\n”,const);
printf(“/%17.s/\n”,const);
printf(“%20.4s/\n”,const); printf(“%-20.4/\n”,const);
}
/КГТУ – пуп земли!/
/КГТУ – пуп земли!/
/ |
КГТУ/ |
/КГТУ |
/ |
28