В языке С++ функции ввода – вывода данных содержатся в нескольких библиотеках. Функции ввода с клавиатуры scanf() и вывода на экран дисплея printf() содержатся в библиотеке stdio - STandarD Input Output library – стандартной библиотеке ввода – вывода. С ее подключением мы уже сталкивались на первом занятии:
include <stdio.h> // Подключение библиотеки ввода-вывода
Функция вывода printf()
Общий вид:
printf(“управляющая строка”, аргумент1, аргумент2,…);
где управляющая строка содержит форматные спецификации, показывающие, как должны быть напечатаны аргументы из списка вывода;
аргумент1, аргумент2,…- это список выводимых на экран параметров (переменных, констант или выражений).
Каждому аргументу из списка, следующему за управляющей строкой, должна соответствовать своя форматная спецификация, например:
printf(“количество нулевых элементов =%d\n”,kol);
/* Переменная kol целая, выводится в соответствии со спецификацией для целых переменных -%d*/
Таблица основных форматных спецификаций.
Формат | Тип выводимой информации |
%d | десятичное целое число |
%c | один символ |
%s | строка символов |
%f | число с плавающей точкой в десятичной записи |
%e | число с плавающей точкой в экспоненциальной записи |
%p | адрес переменной, объекта. |
Между знаком % и символом, определяющим спецификацию формата, можно указать модификатор формата - строку цифр, определяющую ширину поля для выводимого целого числа или точность для вещественного.
|
|
Например, в результате выполнения следующей строки
printf("%f\n", 1.0/3.0); на экран будет выведено 0.333333. Если мы хотим ограничиться выводом двух цифр после запятой, то между знаком % и f, необходимо указать: 3.2. Первая цифра указывает общее количество позиций отводимое на экране для вывода числа, а вторая – означает число позиций, после запятой. Если для вывода числа потребуется большее число позиций, то компилятор, сам увеличит это значение.
printf("%3.2f\n", 1.0/3.0);
В результате на экран будет выведено:
0.33
Следует обратить внимание на вычисление значения, которое выводится на экран: 1.0/3.0. Так как мы выводим вещественное число (%f), то необходимо компилятору указать, что и при вычислении мы используем вещественные числа (3.0, а не 3; 1.0, а не 1). Иначе он будет пытаться преобразовать результат к целочисленному значению, что в лучшем случае приведет к округлению результата до 0, а в худшем – вызовет ошибку компилятора.
Пример 1. Вывести на экран данные целого и вещественного типов, используя различные модификаторы для форматных спецификаций.
#include <stdio.h>
int main() // Печать
{ int n=345; float a=54.123;
printf(“n=%d \n”,n);
printf(“n=%2d \n”,n); /* %2d указывает, что ширина поля должна равняться 2, но так как число состоит из 3 цифр, поле автоматически расширяется до трех */
|
|
printf(“n=%10d \n”,n); /* ширина поля вывода числа равна 10,
printf(“a=%f \n”,a); по умолчанию после запятой выдается 6 цифр, а ширина поля вывода берется такой, чтобы число поместилось в поле вывода */printf(“a=%1.3f \n”,a); /* после запятой 3 цифры, ширина поля автоматически расширяется так, чтобы число поместилось в поле вывода */
printf(“a=%5.1f \n”,a); /* после запятой 1 цифра, лишние позиции в целой части числа заполняются пробелами */
printf(“a=%10.5f \n”,a); /* после запятой 5 цифр, недостающие цифры после запятой заполняются нулям, а лишние позиции в целой части числа заполняются пробелами */
return 0;
}
Пример 2. Используя функцию printf(), вывести на экран текстовую строку, константы целого и вещественного типа.
#include <stdio.h>
int main() // Печать чепухи
{int number=5, num1=800, cost=3100;
float col=18.5;
printf(“%2d человек вместе могут поднять %5d арбузов по %5.1f кг каждый.\n”,
number,num1,col);
printf(“Я хотел бы иметь %8d %c ежемесячного дохода”,cost,’$’);
return 0;
}
Функция ввода scanf()
Общий вид:
scanf(“управляющая строка”, аргумент1, аргумент2,…);
где управляющая строка содержит те же форматные спецификации, что и функция printf(). Основное различие между функциями printf() и scanf() заключается в особенностях списка аргументов. Функция printf() использует имена переменных, константы или выражения, а функция scanf() только указатели на переменные. В применении функции scanf() это эквивалентно выполнению двух простых правил:
чтобы ввести некоторое значение и присвоить его переменной одного из основных типов, перед именем переменной требуется писать символ &;
чтобы ввести значение строковой переменной, использовать символ & не нужно.
При вводе с помощью с помощью scanf () сами вводимые значения можно отделять одним или нескольким пробелами или размещать на разных строках, например, ввод целых переменных x=4 и y=5 можно осуществить следующими способами:
4 5 <Enter> - 1 способ;
или
4 <Enter>
5 <Enter> - 2 способ.
Пример. Используя функцию scanf(), ввести с клавиатуры текстовую строку, константы целого и вещественного типа.
#include <stdio.h>
int main() // Пример использования функции scanf()
{int age;
float assets;
char pet[30]; // Объявление строковой переменной из 30 символов
printf
(“Укажите Ваш возраст, стоимость последней покупки и Ваше любимое животное. \n”);
scanf(“%d %f”, &age, &assets);
scanf(“%s”, pet); // Символ & отсутствует при указании строки символов
printf(
“Мой возраст %d \nстоимость последней покупки %f$\nмое любимое животное %s\n”,
age, assets, pet);
return 0;
}