Язык программирования С++

Автор работы: Пользователь скрыл имя, 01 Марта 2010 в 23:39, Не определен

Описание работы

Язык программирования С++
(Лекции)

Файлы: 1 файл

90146_lekcii_programmirovanie_na_yazyke_si.doc

— 1.04 Мб (Скачать файл)

     3.2. Функция форматированного  вывода printf()

     3.2.1. Назначение и описание функции

     Функция позволяет вывести информация на экран: простые сообщения, значения переменных и специальные символы (перевод строки, горизонтальная табуляция и т.д.). Функция определяется в библиотеке <stdio.h>. Синтаксис функции:

     printf(<управляющая строка>, <список переменных>);

     где <управляющая строка> - строка, которая может содержать:

      а) простые  сообщения, выводимые на экран без  изменения, эти сообщения могут  содержать произвольные символы, в  том числе и на русском языке;

          б) спецификации формата  вывода переменных;

          в) специальные символы;

      <список  переменных> - перечень идентификаторов переменных, значения которых необходимо вывести на экран.

      Спецификации  формата начинаются с символа %, за которым следует код формата. Перечень основных спецификаций приведен в табл. 3.1.

         Таблица 3.1.

Формат  спецификации Назначение
  ЦЕЛЫЕ ЧИСЛА
%d целое десятичное число
%x целое шестнадцатеричное  число
%o целое восьмеричное число
%u целое беззнаковое  десятичное число
%ld число типа длинное  целое
  ВЕЩЕСТВЕННЫЕ  ЧИСЛА
%f вещественное  число в формате xx.xxxxxx
%e вещественное  число в научном формате xx.xxxxx e+xx
%g вещественное  число в форматах %f или %e (в какой форме запись будет короче)
%lf вещественное  число двойной точности
  ПРОЧЕЕ 
%c символ
%s строка
%p указатель

     Специальные символы, приведенные в табл. 2.3, можно использовать для создания новой строки, горизонтальной табуляции подачи звукового сигнала и т.д.

      Замечание: При использовании функции printf() необходимо быть очень внимательным к соответствию спецификаций форматов в управляющей строке и типов переменных в списке. В противном случае выводимые значения будут существенно отличаться от реальных. Кроме этого, требуется проверять количество вводимых спецификаций и количество переменных в списке – они должны быть равны друг другу.

     Примеры:

      1) Необходимо вывести на экран  сообщение «Значения  переменных  равны:» и далее текущие значения двух целых переменных a и b, вещественной переменной c. После вывода значения переменных a и b необходимо перевести курсор на новую строку. Эта задача выполняется следующим вызовом функции:

      printf(“Значения переменных равны: %d %d\n%f”,a,b,c);

      2) Значения двух вещественных переменных  x и y, а также символьной переменной symb необходимо вывести на экран в следующем виде (символы  означают, что здесь будет выведено текущее значение переменной):

      x=…

      y=…

      symb=…

т.е. после  вывода каждой переменной необходимо выполнить перевод строки. После  вывода значений переменных необходимо выдать звуковой сигнал. Эта задача выполняется следующей строкой программы:

      printf(“  x=%f\n y=%f\n symb=%c\n\a”,x,y,symb);

     3.2.2. Точность и ширина поля вывода

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

     %[флаг][ширина].[точность]спецификация

     где флаг – тип выравнивания (пусто  – выравнивания по правому краю, `–` – выравнивания по левому краю, `+` – всегда печатать знак числа);

     ширина  – общая длина поля вывода, т.е. общее количество символов при выводе, включая знак и десятичную точку;

     точность  – количество цифр числа после  запятой.

     Примеры спецификаций формата:

     %12.4f – вывод вещественной переменной с выравниванием по правому краю, общее количество символов при выводе –12 позиций, количество знаков после десятичной точки – 4;

     %-+10.0f – вывод вещественной переменной с выравниванием по левому краю и обязательным выводом знака числа, общая длина поля вывода – 10 позиций, знаки после десятичной точки не выводятся;

     %08d – вывод целой переменной с выравниванием по правому краю,  ширина поля – 8 позиций, слева число дополняется нулями;

     %16s – вывод строки, ширина поля вывода – 16 позиций.

     3.3. Функция форматированного  ввода scanf()

     3.3.1. Назначение и описание функции

     Функция позволяет ввести информация с клавиатуры. Функция определяется в библиотеке <stdio.h>. Синтаксис:

     scanf(<управляющая строка>, <список адресов переменных>);

     где <управляющая строка> - строка, которая может содержать только спецификации формата, перечень допустимых значений спецификаций тот же самый, что и для функции  printf() (см. табл. 3.1.);

     <список  адресов переменных> – содержит перечисленные через запятую адреса переменных, вводимых функцией. Адрес переменной указывается символом & и далее идет идентификатор переменной, например, адрес переменной flag обозначается символами &flag. Для массивов и строк указывать символ & не обязательно.

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

     Примеры:

     1) Ввести с клавиатуры переменные population и age типов длинное целое и вещественное число:

          scanf(“%ld%f”, &population, &age);

        2) Ввести с клавиатуры целую переменную kod в шестнадцатеричном формате, строку name и вещественную переменную двойной точности precision:

          scanf(“%x%s%lf”, &kod, name, &precision);

      При вводе нескольких переменных разделителями между ними являются клавиши пробела,  табуляции и ENTER.

     3.3.2. Пример 3.1

      Рассмотрим  программу, в которой вычисляется  значение функции 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|––––––––|––––––––|\n”);

      y1=sin(x1);

      y2=sin(x2);

      printf(“|%8.4f|%8.4f|\n”,x1,y1);

      printf(“|%8.4f|%8.4f|\n”,x2,y2);

      }

     3.4. Функции консольного  ввода-вывода cscanf() и cprintf()

     Консольная  библиотека <conio.h> имеет очень похожие функции ввода-вывода. Отличие состоит в том, что с помощью консольных функций можно задать атрибуты вводимых/выводимых символов: задать положение курсора, изменить цвета фона и символов. Поэтому, например, не имеет смысла использовать некоторые специальные символы при выводе данных на экран (перевод строки, горизонтальная табуляция и т.п.). Синтаксис функций cscanf() и cprintf() идентичен аналогичным функциям библиотеки <stdio.h>.

     3.4.1. Вспомогательные функции консольной  библиотеки

     Рассмотрим  вспомогательные «полезные» функциями  консольной библиотеки, используемые вместе с функциями ввода-вывода:

     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);

     3.4.2. Пример 3.2

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

      Листинг 3.2

Информация о работе Язык программирования С++