- •Предисловие
- •Знакомство с языком 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() можно использовать для преобразования данных. В частности, для перевода числа в 8-ричную или 16-ричную систему счисления.
Пример
printf(“%d\n”,625); 625 printf(“%o\n”,625); 1161 printf(“%x\n”,625); 271 printf(“%d\n”,-625); -625 printf(“%u\n”,-625); 54911(=65536-625)
Ф-ю printf() можно использовать для нахождения кода ASCII нек-го символа, например
printf(“%c%d\n”,’A’,’A’);
A 101, где А- буква ,а 101 – десятичный код символа А. Можно получить 8-ичный код, для этого “%c%о\n”,’A’,’A’
Можно сделать и обратное преобразование, т.е.
printf(“%d%c\n”,101,101); /* 101 A*/
Что будет если преобразовать число, большее 255 в символ, т.е.
printf(“%d%c\n”,336,336); /*результат 336 p*/
16-чный код AACII символа p=80, а 336=256+80, т.е. 80 - это остаток отделения числа 336 на 256, т.е. деление по модулю, т.е. остаток от 256/256 =0, 257/256=1 и т.д.
Например
printf(%ld %d\n”,65616,65616); /*рез-т 65616 80 */
Максимальное целое число в нашей системе 32767, а мы попытались напечатать 65616, поэтому получили 80.
printf(%ld %c\n”,65616,65616); /*рез-т 65616 р*/
Применение функции scanf()
Так же как printf() функция scanf() содержит управл-ю строку и список аргументов.
scanf(“Управл. cтрока”,арг1,арг2,…);
В функции printf() в списке аргументов м.б. переменные, константы, выражения, а в функции scanf() в списке аргументов
29
только указатели на переменные. При этом надо помнить 2 правила:
1)Для ввода некоторого значения и присвоения его переменной, надо перед именем переменной записать символ &.
2)При вводе строковой переменной символ & использовать не нужно.
Рассмотрим пример:
main()
{
int vozrast; float rost;
char sobaka[20];
printf(“Укажите ваш возраст, рост в метрах и любимую породу собак”);
scanf(“%d%f”, &vozrast,&rost); scanf(“%s”,sobaka); /*отсутствует &*/ printf(“%d %4.2f %s\n”,vosrast,rost,sobaka);
}
ввод
25 1.72 |
/*Можно |
вводить в каждой строке, т.е.25*/ |
ризеншнауцер |
/* |
1.72*/ |
печать |
/* |
ризеншнауцер*/ |
|
|
25 1.72 ризеншнауцер
Функцияя scanf() использует некоторые специальные знаки (пробелы, символы табуляции, и “новая строка”) для разбиения входного потока на отдельные поля. Специальные знаки, в т.ч. пробелы, опускаются.
Функцияя scanf() использует практически такие же спеццификации преобразования, что и функция printf().
Основные отличия для функции scanf() следующие: 1)Отсутствует спецификация %g
30
2)Спецификации %f и %e эквивалентны. Обе спецификации допускают наличие (отсутствие) знака, строки цифр десятичной точкой или без нее и поля показателя степени.
3)Для чтения целых чисел типа short применяется спецификация %h
Контрольные вопросы
1.Назначение функций ввода/вывода. Пример использования.
2.Функция printf() языка Си. Опишите синтаксическую конструкцию, логику работы.
3.Форматы (спецификации) для вывода значений разных типов.
4.Модификаторы спецификаций, используемые с функцией printf().
5.Приведите пример использования функции printf().
6.Функция scanf() языка Си. Опишите синтаксическую конструкцию, логику работы.
7.Форматы (спецификации) для ввода значений разных типов.
8.Приведите пример использования функции scanf().
9.Как ввести с клавиатуры значение переменной n типа int? Какой из ответов верный:
а) scanf (n);
б) scanf (“%d”,n); в) scanf (“%d”,&n); г) scanf (“%f”,n); д) scanf (“%f”,&n);
10.Для чего служит функция printf()? Определите результат выполнения фрагмента программы:
int x=-2;
printf (“%d \n %d”, x*x, abs(x));
31