Форматированный ввод, вывод

В языке С++ функции ввода – вывода данных содержатся в нескольких библиотеках. Функции ввода с клавиатуры 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;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: