Начала программирования на языке Си, страница 8

Контрольные вопросы и задания

1. Что такое операнд?

2. Чем отличаются операции присваивания и сравнения?

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

int(float(X1/floatX2+double(X3)*char(X4));


6. ФУНКЦИЯ ФОРМАТИРОВАННОГО ВЫВОДА PRINTF()

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

Оператор вывода функции имеет вид:

printf("форматная_строка", список_аргументов);

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

Пример:

#include<stdio.h>

void main()

{

printf(“\nЗдравствуй\n”);

}

Директива #include<stdio.h> включает в текст программы прототип библиотечной функции printf(). Без этой директивы при запуске программы появится сообщение об ошибках. В этом примере отсутствует список_аргументов так как форматная строка представлена только набором символов  двух управляющих символов ‘\n’, означающих перевод строки, т.е. на печать слово “Здравствуй” выйдет с начала новой строки и после него последует переход на другую строку.

Обратите внимание на то, что функция вывода printf() допускает использование в форматной строке букв славянского алфавита – кириллицы.

Пример: Результатом действия функции вывода

printf(“\n@##!LKJH78gh\tgh8*j9);ljl\n\t\t!+=k>n<\n\nЯЯЮЮЩЗЪЪ \n ”);

будет следующее:

@##!LKJH78gh     gh8*j9);ljl

!+=k>n<

ЯЯЮЮЩЗЪЪ 

\t – зарезервированное сочетание символов, означающее табуляцию или отделение символов друг от друга.

Если на печать необходимо вывести не символьные, а цифровые данные, то необходимо задать их формат спецификации, имеющий вид:

%ширина поля.точность модификатор спецификатор, причем обязательными являются символ % - флажок и спецификатор. К наиболее часто применяемым спецификаторам относятся:

%d – для целых десятичных чисел (int);

%u – для целых десятичных чисел без знака (unsigned);

%f – для вещественных чисел в форме с фиксированной точкой (float, double);

%e – для вещественных чисел с плавающей точкой (с мантиссой и порядком) для типов double и float.

Для целых чисел может быть задана  ширина поля. Например %4d, %6u, то есть при выводе на печать, под целые числа будет выделено 4 и 6 знакомест соответственно. Для чисел с плавающей запятой, кроме ширины поля можно задать еще и точность вывода, то есть количество цифр после запятой. Например %5.3f означает, что на печать будет выдано сило под которое выделено 5 знакомест с учетом знака + или – из них три знакоместа для чисел после десятичной точки (то есть вывод чисел с точностью до третьего знака после десятичной точки).

Пример 1:

Пусть переменная summa имеет значение 2305.8, то следующий ее вывод

printf(“\n summa =%f”, summa);

даст summa=2305.8.

Если функция вывода выглядит так: printf(“\n summa =%8.2f”, summa);

То вывод будет следующим summa=_ _2305.80. (Символ "_" на печать не выводится, здесь представлен для наглядности)

Пример2:

После выполнения операторов

float c,e;  int k;

c=48.3;  k=-83;  e=16.33;

printf(“\n c=%f \t k=%d \t e=%e”, c, k, e);

на экране получится

c=48.299999        k=-83        e=1.63300e+01

здесь ‘\t’ – символ табуляции – “печать” равного количества пробелов между данными.

Пример 3:

printf(“\n c=%5.2f \t k=%5d \t e=%8.2f \ e=%11.4e”, c, k, e, e);

Результат на экране:

c=_48.30      k= _ _-83      e=_ _ _ _16.33      e=1.6330e+01

Обратите внимание, что последовательность форматов чисел с в форматной строке должен соответствовать порядку списка аргументов и наоборот.

Контрольные вопросы и задания

1.  Напишите программу, выводящую информацию в следующем виде:

а)

Жжется больнее злая крапива,

Если берут ее в руки учтиво.

Если ж возьмете ее не робея,

Злая крапива жалит слабее.