
- •1. Краткие теоретические сведения
- •1.4. Пустой оператор
- •1.5. Составной оператор (блок)
- •1.6. Операторы начала и конца программы
- •Int main()
- •1.7. Оператор return
- •1.8. Оператор присваивания
- •1.8.1. Множественное присваивание
- •1.8.2. Ошибки при присваивании
- •1.8.3. Не путайте операторы равенства и присвоения
- •1.8.4. Составные операторы присвоения
- •1.8.6. Присваивание значения при объявлении
- •1.9. Операторы ввода-вывода
- •1.10. Функции ввода и вывода
- •1.10.1. Функция printf
- •1.10.2. Функция scanf
- •1.11. Операторы потокового ввода и вывода
- •1.11.1. Использование cout для отображения вывода на экран
- •1.11.2. Использование cout для вывода чисел
- •1.11.3. Вывод нескольких значений одновременно
- •1.11.4. Использование специальных символов вывода
- •1.11.5. Другие специальные символы
- •1.11.5. Вывод восьмеричных и шестнадцатеричных значений
- •1.11.6. Вывод на стандартное устройство ошибок
- •1.11.7. Управление шириной вывода
- •1.11.8. Директива #define
- •1.11.9. Оператор потокового вывода cin
- •1.11.10. Второе знакомство с cin
- •1.11.11. Следите за ошибками переполнения
- •1.11.12. Следите за ошибками несовпадения типов
- •1.11.13. Чтение символьных данных
- •1.11.14. Чтение слов с клавиатуры
- •1.11.15. Чтение строковых данных
- •1.12. Комментарии. Использование пробелов
- •1.13. Линейный вычислительный процесс
- •1.16. Таблица выбора идентификаторов
- •2. Задание
- •2.10. Задания
- •2.10.1. Задание 1
- •2.10.2. Задание 2
- •2.10.3. Задание 3 (домашнее)
- •3. Выводы
- •4. Требование к отчету
- •5. Вопросы для самоконтроля
- •Литература
- •Оглавление
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>).