Автор работы: Пользователь скрыл имя, 01 Марта 2010 в 23:39, Не определен
Язык программирования С++
(Лекции)
Функция позволяет вывести информация на экран: простые сообщения, значения переменных и специальные символы (перевод строки, горизонтальная табуляция и т.д.). Функция определяется в библиотеке <stdio.h>. Синтаксис функции:
printf(<управляющая строка>, <список переменных>);
где <управляющая строка> - строка, которая может содержать:
а) простые сообщения, выводимые на экран без изменения, эти сообщения могут содержать произвольные символы, в том числе и на русском языке;
б) спецификации формата вывода переменных;
в) специальные символы;
<список переменных> - перечень идентификаторов переменных, значения которых необходимо вывести на экран.
Спецификации формата начинаются с символа %, за которым следует код формата. Перечень основных спецификаций приведен в табл. 3.1.
Таблица 3.1.
Формат спецификации | Назначение |
ЦЕЛЫЕ ЧИСЛА | |
%d | целое десятичное число |
%x | целое шестнадцатеричное число |
%o | целое восьмеричное число |
%u | целое беззнаковое десятичное число |
%ld | число типа длинное целое |
ВЕЩЕСТВЕННЫЕ ЧИСЛА | |
%f | вещественное число в формате xx.xxxxxx |
%e | вещественное
число в научном формате xx. |
%g | вещественное число в форматах %f или %e (в какой форме запись будет короче) |
%lf | вещественное число двойной точности |
ПРОЧЕЕ | |
%c | символ |
%s | строка |
%p | указатель |
Специальные символы, приведенные в табл. 2.3, можно использовать для создания новой строки, горизонтальной табуляции подачи звукового сигнала и т.д.
Замечание: При использовании функции printf() необходимо быть очень внимательным к соответствию спецификаций форматов в управляющей строке и типов переменных в списке. В противном случае выводимые значения будут существенно отличаться от реальных. Кроме этого, требуется проверять количество вводимых спецификаций и количество переменных в списке – они должны быть равны друг другу.
Примеры:
1)
Необходимо вывести на экран
сообщение «Значения
printf(“Значения переменных равны: %d %d\n%f”,a,b,c);
2)
Значения двух вещественных
x=…
y=…
symb=…
т.е. после вывода каждой переменной необходимо выполнить перевод строки. После вывода значений переменных необходимо выдать звуковой сигнал. Эта задача выполняется следующей строкой программы:
printf(“ x=%f\n y=%f\n symb=%c\n\a”,x,y,symb);
В функции printf() существует возможность задания вывода переменных определенного формата, а именно, можно задавать ширину поля переменных, определять точность вывода вещественных переменных, определять тип выравнивания данных и т.д. В этом случае спецификации формата записывается в такой форме:
%[флаг][ширина].[
где флаг – тип выравнивания (пусто – выравнивания по правому краю, `–` – выравнивания по левому краю, `+` – всегда печатать знак числа);
ширина – общая длина поля вывода, т.е. общее количество символов при выводе, включая знак и десятичную точку;
точность – количество цифр числа после запятой.
Примеры спецификаций формата:
%12.4f – вывод вещественной переменной с выравниванием по правому краю, общее количество символов при выводе –12 позиций, количество знаков после десятичной точки – 4;
%-+10.0f – вывод вещественной переменной с выравниванием по левому краю и обязательным выводом знака числа, общая длина поля вывода – 10 позиций, знаки после десятичной точки не выводятся;
%08d – вывод целой переменной с выравниванием по правому краю, ширина поля – 8 позиций, слева число дополняется нулями;
%16s – вывод строки, ширина поля вывода – 16 позиций.
Функция позволяет ввести информация с клавиатуры. Функция определяется в библиотеке <stdio.h>. Синтаксис:
scanf(<управляющая строка>, <список адресов переменных>);
где <управляющая строка> - строка, которая может содержать только спецификации формата, перечень допустимых значений спецификаций тот же самый, что и для функции printf() (см. табл. 3.1.);
<список адресов переменных> – содержит перечисленные через запятую адреса переменных, вводимых функцией. Адрес переменной указывается символом & и далее идет идентификатор переменной, например, адрес переменной flag обозначается символами &flag. Для массивов и строк указывать символ & не обязательно.
Замечание: При использовании функции scanf() в управляющей строке нежелательно использовать никаких лишних символов (даже пробелов), кроме спецификаций. Нельзя использовать и специальные символы.
Примеры:
1)
Ввести с клавиатуры
scanf(“%ld%f”, &population, &age);
2) Ввести с клавиатуры целую переменную kod в шестнадцатеричном формате, строку name и вещественную переменную двойной точности precision:
scanf(“%x%s%lf”, &kod, name, &precision);
При вводе нескольких переменных разделителями между ними являются клавиши пробела, табуляции и ENTER.
Рассмотрим программу, в которой вычисляется значение функции y=sin(x) для двух введенных с клавиатуры значений аргумента. При этом вывод на экран необходимо выполнить в виде следующей таблицы (ширина поля каждой переменной 8 позиций, точность – 4 знака):
x | y |
xx.xxxx | xx.xxxx |
xx.xxxx | xx.xxxx |
Листинг 3.1
/* Программа вычисления функции y=sin(x) */
#include <stdio.h>
#include <math.h>
void main()
{
float x1,x2,y1,y2;
printf(“введите два значения аргумента:\n”);
scanf(“%f%f”,&x1,&x2);
printf(“\n| x | y |”);
printf(“\n|––––––––|––––
y1=sin(x1);
y2=sin(x2);
printf(“|%8.4f|%8.4f|\n”
printf(“|%8.4f|%8.4f|\n”
}
Консольная библиотека <conio.h> имеет очень похожие функции ввода-вывода. Отличие состоит в том, что с помощью консольных функций можно задать атрибуты вводимых/выводимых символов: задать положение курсора, изменить цвета фона и символов. Поэтому, например, не имеет смысла использовать некоторые специальные символы при выводе данных на экран (перевод строки, горизонтальная табуляция и т.п.). Синтаксис функций cscanf() и cprintf() идентичен аналогичным функциям библиотеки <stdio.h>.
Рассмотрим вспомогательные «полезные» функциями консольной библиотеки, используемые вместе с функциями ввода-вывода:
1) очистка экрана
clrscr();
2)
задание нового текущего
gotoxy(x,y);
где x, y – координаты нового положения курсора, диапазоны возможных изменения координат следующие x=1…80, y=1…25, координате (1,1) соответствует верхний левый угол экрана;
3) изменение текущего цвета символов (в текстовом режиме):
textcolor(c);
где c – цвет символов (с=0…15 или цвета в виде макроопределения, например, BLACK, BLUE, GREEN, RED,…YELLOW, WHITE);
4) изменение текущего звена фона под символами (в текстовом режиме):
textbackground(c);
где c – цвет фона (с=0…7 или цвета в виде макроопределения, например, BLACK, BLUE, …LIGHTGRAY);
Создадим программу ввода фамилии в окне. С помощью консольных функций необходимо выполнить следующие операции: очистить экран дисплея, в центре экрана вывести изображение окна (цветная рамка с желтым цветом символов и синим цветом фона) размером 20 столбцов на 3 строки, ввести строку в пределах окна.
Листинг 3.2