Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР5-С++-22 марта-2012.doc
Скачиваний:
12
Добавлен:
15.09.2019
Размер:
1.48 Mб
Скачать

1.10.2. Функция scanf

Функция scanf предназначена для вывода форматированной последовательности данных

Формат функции ввода:

scanf("строка_формата", &список_переменных);

Основным отличием применения функции scanf() от функции printf() является знак & перед именем переменной, в которую записываются результаты ввода.

Функция scanf() может работать сразу с несколькими переменными. Предположим, что необходимо ввести два целых числа с клавиатуры. Формально для этого можно дважды вызвать функцию scanf(), однако лучше воспользоваться такой конструкцией:

scanf(“ %d, %d ”, &n, &m);

Функция scanf() интерпретирует это так, как будто ожидает, что пользователь введет число, затем – запятую, а затем – второе число. Все происходит так, как будто требуется ввести два целых числа следующим образом:

88,221

или

88, 221

Функция scanf() возвращает число успешно считанных элементов. Если операции считывания не происходило, что бывает в том случае, когда вместо ожидаемого цифрового значения вводится какая-либо буква, то возвращаемое значение равно 0.

Работа функции scanf() демонстрируется на примере 5.10.

Пример 5.10. Пример использования функции scanf().

#include<stdio.h>

int main()

{

int age;

float weight;

printf(“Введите информацию о Вашем возрасте: ”);

scanf(“%d”, &age);

printf(“Введите информацию о Вашем весе: ”);

scanf(“%f”, &weigth);

printf(“Ваш возраст = %d, Ваш вес = %f”, age, weigth);

getchar();

return 0;

}

Тестирование:

Пример 5.11. Пример использования функций scanf() и printf().

Приведем программу, запрашивающую длины трех сторон треугольника.

#include<stdio.h>

#include<conio.h>

int main()

{

int a,b,c;

printf("Введите длины трех сторон треугольника\n");

scanf("%d %d %d",&a,&b,&c);

printf("Ввод выполнен\n");

getch();

return 0;

}

Тестирование:

В данном примере оператор ввода scanf("%d %d %d",&a,&b,&c); в строке формата содержит три спецификатора %d, т.к. вводятся три целочисленных числа a,b,c , соответствующих сторонам треугольника.

Задание:

Измените текст программы примера 5.11 так, чтобы можно было выполнить ввод вещественных значений переменных a,b,c.

Примечание:

При вводе и выводе информации следует обратить внимание на то, что консольное приложение создается в Windows, а выполняется как программа DOS. В DOS используется кодировка OEM (866), а в Windows — ANSI (1251), буквы русского алфавита в которых имеют разные коды. Первые 128 символов совпадают – это ASCII, стандарт английских символов (плюс служебные). Следовательно, для работы с русскими буквами (кириллицей) необходимо в C++ обеспечить преобразование символьной информации между этими двумя кодировками. Как это делать рассмотрено в лабораторной работе 1.

1.11. Операторы потокового ввода и вывода

В отличие от ANSI С, в С++ для организации консольного ввода/вывода применяются операции >> и <<, известные в С как правый и левый сдвиг соответственно, хотя, безусловно, допус­тимо использование традиционных функций языка С. Как будет показано в дальнейшем, данные операции в С++ по-прежнему выполняют сдвиги бит в переменных, однако их возможности расширены за счет перегрузки операций.

Существуют стандартные потоки для ввода информации с клавиатуры, вывода данных на экран, а также для вывода в слу­чае возникновения ошибки. Помимо этого, приложения поддер­живают работу со стандартным потоком вывода на печать и до­полнительным консольным потоком. В общем случае каждый из перечисленных потоков может быть представлен как некоторый виртуальный файл (байт-поток), закрепленный за определенным физическим устройством. Стандартный поток ввода/вывода мо­жет быть переопределен с тем, чтобы вывод, например, осущест­влялся не на экран, а в заданный файл.

В С++ стандартный поток ввода связан с константой cin, а поток вывода - с константой cout (для использования этих кон­стант подключается заголовочный файл <iostream.h>).