Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 300094.doc
Скачиваний:
2
Добавлен:
30.04.2022
Размер:
342.53 Кб
Скачать

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. Программирование ветвлений.