Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TD-Si_Razrabotka_programm_lineyn_struktury.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
222 Кб
Скачать
☆

Вывод десятичных чисел в окно программы

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

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

Основными элементами управляющей строке являются форматы вывода, которые состоят одной или пары букв после знака %. Для десятичных данных есть следующие форматы вывода:

%d – для целых со знаком,

%u – для целых без знака,

%f – для вещественных типа float в естественной форме

%lf – для вещественных типа double в естественной форме

%e – для вещественных в экспоненциальной форме

%g – для вещественных в наиболее компактной экспоненциальной форме или в естественной форме. Форматы, записанные в управляющей строке, ставятся в соответствие элементам списка вывода в соответствии с порядком их следования: первый по порядку формат соответствует первому элементу списка вывода, второй – второму элементу и т.д.

Например, если в программе есть переменные

int k=-25;

unsigned int j=7;

float x=-4.55;

double y=3.125E-2

то оператором

printf("%d%u%f%lf",k,j,x,y);

будет выведена следующая строка чисел

-257-4.5500000.031250

В использованной управляющей строке "%d%u%f%lf" форматы расположены слитно, поэтому числа в строке окна программы также расположены слитно, и прочитать правильно данные не всегда будет возможно (в примере число 7, представляющее значение j, слилось с числом -25, представляющим значение k, и не понять, то ли это -2 и 57, то ли -25 и 7; вещественные числа тоже).

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

1. Использование поясняющих текстов: оператор

printf("k=%d j=%u x=%f y=%lf",k,j,x,y);

строка в окне программы k=-25 j=7 x=-7.550000 y=0.031250

2. Использование пробелов printf("k=%d %u %f %lf",k,j,x,y); Строка в окне программы -25 7 -7.550000 0.031250

3. Использование управляющих знаков табуляции (\t) printf("\n\t%d\t%u\t%f\t%lf\n",k,j,x,y); Строка в окне программы -25 7 -7.550000 0.031250

4. Использование управляющих знаков (\n) перехода на повую строку printf("%d\n%u\n%f\n%lf",k,j,x,y); Строка в окне программы -25

7

-7.550000

0.031250

5. Использование только управляющей строки для вывода заголовочного текста

printf("\tk\tj\tx\t\ty\n");

и вывод под ней соответствующих значений переменных

printf("\t%d\t%u\t%f\t%lf\n",k,j,x,y);

Строки в окне программы

k j x y

-25 7 -7.550000 0.0312507

Управляющий символ \n обычно ставят в конце управляющей строки чтобы следующий вывод был с новой строки, или наоборот, ставят \n в начале управляющей строки, чтобы текущий вывод был с новой строки окна программы независимо от предыстории. Если же этого не делать, то вывод данных следующим оператором продолжится в текущей строке вслед за последним выведенным значением.

Пример. Составить программу вычисления тангенса угла, значение которого в градусах (целое число) вводится с клавиатуры в ответ на приглашение к вводу. Вывести на экран с пояснениями введенное значение угла в градусах, соответствующее ему значение в радианах и вычисленное значение тангенса этого угла.

Программа (+D:\temp\temp1\temp1+)

#include <stdafx.h>

#include <math.h>

int _tmain(int argc, _TCHAR* argv[])

{

int Fi;

float R;

//Вывод приглашения к вводу угла в градусах

printf("input Fi: ");

//Ввод значения угла в переменную Fi

scanf("%d",&Fi);//см. следущий раздел

//Ввод значения угла в градусах и пропуск строки

printf("Fi = %d\n",Fi);

//Перевод угла в радианы и присвоение переменной R

R=Fi*atan(1.0f)/45;

//Вывод значения R в радианах и пропуск строки

printf("\nR = %f rad\n",R);

//Вывод tg(R) с поясняющим текстом

printf("\ntg(%f) = %f\n",R, tan(R));

return 0;

}

Протокол ввода-вывода в окне программы для угла 30о будет иметь вид:

input Fi: 30

Fi = 30

R = 0.523599 rad

tg(0.523599) = 0.577350

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

Программисту, чтобы определить для вещественных чисел свои поля вывода и количества цифр в дробной части (после точки), следует перед символом формата записать эти значения через точку. Если поле вывода будет иметь длину, большую чем требуется для представления выводимого значения, то это значение будет выведено в правой части поля (с выравниванием по правой стороне поля). Чтобы выравнивание было по левой стороне поля вывода перед значением длины поля следует поставить знак минус (-).

Например, если в программе вместо оператора

printf("\nR = %f rad\n",R);//длина поля вывода по умолчанию

использовать

printf("\nR = %30.18f rad \n",R);

то будет выведено в поле из 25 знакомест в экспоненциальной форме число с 18-ю цифрами после точки в мантиссе с выравниванием по правой стороне поля вывод

R = 0.523598775598298820 rad

а если использовать выравнивание влево (знак минус в формате вывода)

printf("\nR = %-30.18f rad\n",R);

то будет выведено

R = 0.523598775598298820 rad

Аналогично, если в программе вместо оператора

printf("\nR = %e rad\n",R);//длина поля вывода по умолчанию

выводящего

R = 5.235988e-001 rad

использовать

printf("\nR = %25.18e rad\n",R);

то будет выведено в поле из 25 знакомест в естественной форме число с 18-ю цифрами

в дробной части с выравниванием по правой стороне поля вывод

R = 5.235987755982988200e-001 rad

а если использовать выравнивание влево (знак минус в формате вывода)

printf("\nR = %-25.18e rad\n",R);

то будет выведено

R = 5.235987755982988200e-001 rad

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]