- •Часть 1
- •Введение
- •1. Лабораторная работа № 1
- •Понятие ветвления
- •2. Типы данных
- •Операции
- •4. Константы
- •5. Выражение
- •6. Основные управляющие структуры
- •7. Программа на языке Си
- •8. Ввод и вывод данных
- •2. Лабораторная работа № 2
- •1. Понятие цикла
- •2. Циклические управляющие структуры
- •3. Схемы итерационного цикла
- •Контрольные вопросы
- •3. Лабораторная работа № 3
- •Методические указания
- •1.Понятие сложного типа
- •3.Применение массивов при решении задач
- •4.Рекомендации
- •Заключение
- •Библиографический список
- •Часть 1
- •394026 Воронеж, Московский просп., 14
8. Ввод и вывод данных
Ввод и вывод осуществляется посредством использования функций ввода/вывода, входящих в состав стандартной библиотеки языка Си. Необходимые нам функции содержатся в файле stdio.h, который должен быть подключен к программе директивой #include < stdio.h>. Для любой программы на языке Си всегда доступны три стандартных файла: stdin – файл ввода, stdout – файл вывода, stderr – файл сообщений об ошибках. По умолчанию они связываются с пользовательским терминалом. Файлы открываются при входе в программу и закрываются при выходе из нее.
Для задания значений исходным данным задачи будем использовать оператор (функцию) форматного ввода scanf:
scanf (управляющая строка [,список аргументов]);
Функция scanf читает данные из стандартного потока stdin в переменные, адреса которых задаются в списке аргументов. В простом случае управляющая строка состоит из одной или более спецификаций преобразования (формата).Спецификация преобразования в простом случае имеет вид: %C , где C – символ преобразования.
Символы преобразования Входная строка Тип аргмента
c Символ char
d Десятичное целое int
D Десятичное целое long
e Значение float
f с плавающей точкой
Каждой вводимой переменной в строке функции scanf должна соответствовать спецификация. Перед именами переменных необходимо ставить символ &. Этот символ означает "взять адрес". Управляющая строка рассматривается слева направо и, когда встречается первая спецификация формата, значение первого входного поля преобразуется согласно этой спецификации и записывается по адресу первой переменной списка аргументов. Согласно второй спецификации преобразуется значение второго входного поля и помещается по адресу второй переменной и так далее до конца управляющей строки.
Пример:
scanf (“ %d %d %d ”,&x,&y,&z);
Первое значение из входного потока рассматривается как целое число и преобразуется в соответствии с %d к типу int, затем помещается по адресу переменной x, аналогично преобразуются следующие два значения и помещаются по адресам переменных x и y соответственно.
Вводимые значения в потоке ввода разделяются пробелами.
Для вывода результатов работы программы будем использовать оператор (функцию) форматного вывода printf:
printf(управляющая строка [,список аргументов]);
Управляющая строка может содержать символы, которые нужно вывести, управляющие символы и спецификации формата. Аргумент задается константой, переменной или выражением. Общий вид спецификации преобразования: % [-] [dd] [. pp] C
где C – символ или пара символов, определяющих преобразование выводимого значения;
- означает, что выводимое значение должно быть в поле вывода выравнено влево. По умолчанию оно выравнивается вправо;
dd – десятичное целое число, задающее минимальный размер поля, т.е. число позиций, занимаемых выводимым значением. Если размер поля недостаточен для значения, оно тем не менее будет выведено полностью, если размер поля больше, в избыточных позициях по умолчанию будут пробелы;
pp – десятичное целое число, указывающее для плавающих типов, количество цифр после десятичной точки.
Пример:
printf("\nВозраст Эрика - %d. Его доход $%.2f",age,income);
Предполагается, что целой переменной age (возраст) и вещественной переменной income (доход) присвоены какие-то значения.
Последовательность символов "\n" переводит курсор на новую строку.
Последовательность символов "Возраст Эрика -" будет выведена с начала новой строки. Символы %d - это спецификация для целой переменной age в соответствии с которой значение переменной будет преобразовано в десятичное число и выведено после символов "Возраст Эрика -" . Следующая литерная строка " Его доход $ ". %2f - это спецификация ( символ преобразования формата ) для вещественного значения, а также указание формата для вывода только двух цифр после десятичной точки. Так выводится значение переменной income.
Символ формата |
Тип выводимого объекта |
%с char
%s строка
%d int
%o int ( в восьмеричном виде )
%u unsigned int
%x int ( в шестнадцатеричном виде )
%ld long ( в десятичном виде )
%lo long ( в восьмеричном виде )
%lu unsigned long
%lx long ( в шестнадцатеричном виде )
%f float/double ( c фиксированной точкой)
%e float/double ( в экспоненциальной форме )
%g float/double ( в виде f или е в зависимости от значения )
%lf long float ( c фиксированной точкой )
%le long float ( в экспоненциальной форме )
%lg long float ( в виде f или е в зависимости
от значения )
Пример простой программы на Си:
#include<stdio.h>
main()
{
int weight, /*вес*/
height; /*рост*/
printf("\n Введите ваш вес: ");
scanf("%d", &weight);
printf(" \nВведите ваш pocт: ");
scanf("%d", &height);
printf("\n\nВес = %d, рост = %d\n",
weight,height);
}
Чтобы знать, при каких именно исходных данных выполнялась программа, целесообразно вывести на экран не только результаты, но и введенные значения исходных данных.
Контрольные вопросы
1. Понятие типа данных.
2. Базовые типы в Си.
3. Характеристики простых скалярных типов данных.
4. Понятие выражения. Правила вычисления выражения.
5. Структура программы на языке Си.
6. Управляющие структуры следования.
7. Управляющие структуры ветвления.
8. Программирование ветвлений.