![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Оператор вызова функции scanf () имеет следующую структуру:
scanf (форматная_строка, список_аргументов);
из примера 3 имеется оператор:
scanf ("%f",&а);
Здесь "%f" - форматная строка; &а — список аргументов, состоящий из одного элемента. Этот оператор производит ввод числового значения в переменную а.
Символьную последовательность, вводимую с клавиатуры и воспринимаемую функцией scanf (), принято называть входным потоком. Функция scanf () разделяет этот поток на отдельные вводимые величины, интерпретирует их в соответствии с указанным типом и форматом и присваивает переменным, содержащимся в списке аргументов.
Список аргументов - это перечень вводимых переменных, причем перед именем каждой переменной ставится значок &. Это знак операции «взятие адреса переменной». Подробнее смысл этого действия будет объяснен позже, а пока примем это правило формально.
Форматная строка заключается в кавычки (как и для printf) и состоит из списка спецификаций. Каждая спецификация начинается со знака %, после которого могут следовать
*ширина_поля модификатор спецификатор
Из них обязательным элементом является лишь спецификатор. Для ввода числовых данных используются следующие спецификаторы:
d - для целых десятичных чисел (тип int);
u - для целых десятичных чисел без знака (тип unsigned int);
f - для вещественных чисел (тип float) в форме с фиксированной точкой;
e - для вещественных чисел (тип float) в форме с плавающей точкой.
Звездочка в спецификации позволяет пропустить во входном потоке определенное количество символов. Ширина поля - целое
положительное число, позволяющее определить число символов из входного потока, принадлежащих значению соответствующей вводимой переменной. Как и в спецификациях вывода для функции printf (), в спецификациях ввода функции scanf () допустимо использование модификаторов h, l, L. Они применяются при вводе значений модифицированных типов:
hd - для ввода значений типа short int;
ld - для ввода значений типа long int;
lf, le - для ввода значений типа double в форме с фиксированной и плавающей точкой;
Lf, Le - для ввода значений типа long double в форме с фиксированной и плавающей точкой.
В программе из примера 1 все три величины а, b, с можно ввести одним оператором:
scanf ("%f%f%f",&а, &b, &с);
Если последовательность ввода будет такой:
5 3.2 2.4 <Enter>
то переменные получат следующие значения: а = 5,0, b = 3,2, с = 2,4. Разделителем в потоке ввода между различными значениями может быть любое количество пробелов, а также другие пробельные символы: знак табуляции, конец строки. Только после нажатия на клавишу Enter вводимые значения присвоятся соответствующим переменным. До этого входной поток помещается в буфер клавиатуры и может редактироваться.
5.4 ПОТОКОВЫЙ ВВОД-ВЫВОД В СИ++
Программируя на языке Си++, можно пользоваться средствами ввода-вывода стандартной библиотеки Си, подключаемой с
помощью заголовочного файла stdio.h, как это делалось выше. Однако в Си++ имеются свои специфические средства ввода-вывода. Это библиотека классов, подключаемая к программе с помощью файла iostream.h. В этой библиотеке определены в качестве объектов стандартные символьные потоки со следующими именами:
cin - стандартный поток ввода с клавиатуры;
cout - стандартный поток вывода на экран.
Ввод данных интерпретируется как извлечение из потока cin и присваивание значений соответствующим переменным. В Си++ определена операция извлечения из стандартного потока, знак которой >>. Например, ввод значений в переменную х реализуется оператором
cin>>х;
Вывод данных интерпретируется как помещение в стандартный поток cout выводимых значений. Выводиться могут тексты, заключенные в двойные кавычки, и значения выражений. Знак операции помещения в поток <<. Примеры использования потокового вывода:
cout<<а+b;
cout<<"\nРезультат="<<Y;
cout<<"х=”<<x<<" у=”<<у<<” z=”<<z<<endl;
Из приведенных примеров видно, что в выходном потоке можно использовать управляющие символы, как и при использовании функции printf (); перед каждым элементом вывода нужно ставить знак операции <<. Элемент вывода endl является так называемым манипулятором, определяющим перевод курсора на новую строку (действует аналогично управляющему символу \n).
В процессе потокового ввода-вывода происходит преобразование
из формы внешнего символьного представления во внутренний формат и обратно. Тип данных и необходимый формат определяются автоматически. Стандартные форматы задаются специальными флагами форматирования, которые устанавливаются с помощью функции setf (). Кроме того, на формат отдельных выводимых данных можно влиять путем применения специальных манипуляторов. Здесь мы не будем подробно разбирать эти вопросы.
Перепишем программу из примера 3 в варианте с использованием потокового ввода-вывода Си++. Пример 4:
#include <iostream.h>
#include <math.h>
void main ()
{float а, b, с, p, s;
cout<<"\nа="; cin>>а;
cout<<"\nb="; cin>>b;
cout<<”\nc="; cin>>с;
р=(а+b+с)/2;
s=sqrt (р*(р-а)*(р-b)* (р-с));
cout<<"\nПлощадь треугольника="<<s;
}
Дата публикования: 2014-11-02; Прочитано: 735 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!