Функция форматного вывода на экран.
Для форматного вывода на экран используется функция
printf(строка формата, список вывода) , где
¨ список вывода - перечисленные через ',' выражения, значения которых хотим вывести на экран.
¨ строка формата - символьная строка, указывающая:
a) формат отображения этих значений на экране;
b) сопровождающий их текст.
Например,
printf("\nЭтап %d длится %f секунд.",i,(t-3.)/2.);
Функция printf последовательно выводит на экран символы строки формата. При этом символы входящих в строку спецификаций формата заменяются значениями выражений из списка вывода в порядке их следования. Для вывода значений каждого из имеющихся типов данных применяется своя спецификация формата:
Тип данного
| Спецификация формата
| Целый
| %d или %nd (n - число)
| Вещественный
| %f или %n.mf (n,m - числа)
| Символьный
| %c
| Строковый
| %s
| Если i=2 и t=60.0, то при выполнении оператора, указанного в примере, на экране будет напечатано с новой строки:
Этап 2 длится 28.500000 секунд.
Элементов списка вывода должно быть не меньше, чем спецификаций в строке формата. Типы элементов списка и спецификаций должны соответствовать друг другу. Несоответствия компилятор не выявляет, но будут неверными выводимые результаты.
Имеется возможность управлять формой выводимых на экран целых и вещественных чисел. Числа n и m в спецификациях формата задают соответственно общее количество позиций на экране (включая знак '-' и десятичную точку) и количество разрядов, выводимое после десятичной точки. Например, оператор
printf("\nЭтап %3d длится %6.2f секунд.",i,(t-3.)/2.);
выведет значение переменной i в 3-х позициях, а значение выражения (t-3.)/2. в 6 позициях с двумя разрядами после десятичной точки:
Этап úú2 длится ú28.50 секунд. (символами ú показаны пробелы, которые выводятся, если цифр в числе меньше, чем позиций, указанных в соответствующей спецификации).
Если заданных позиций не хватает для вывода числа, место для вывода отводится автоматически.
Функция ввода символа с клавиатуры.
Функция getch() приостанавливает выполнение программы до нажатия пользователем любой клавиши и возвращает введенный символ. В примере на экран выводится нажатая пользователем клавиша:
char sim;
sim=getch();
printf("Нажата клавиша %c.",sim);
Составной оператор.
Иногда требуется выполнить несколько операторов там, где по правилам синтаксиса можно указать только один. Язык Си позволяет объединить эти операторы в один, заключив их в фигурные скобки:
{ Например:
| {
| оператор1
| a = 1;
| оператор2
| b += sin(a);
| ····················
| c *= b;
| }
| }
| Такой оператор называется составным или блоком. После символа "}" символ ";" указывать не надо.
Операторы управления.
Операторы в программе выполняются последовательно один за другим. Операторы управления предназначены для изменения последовательности выполнения операторов. Блок-схемы этих операторов приведены в разделе 1.2.3.
Обратите внимание на сдвиги на две позиции вложенных в операторы управления конструкций при записи их в тексте программы. Такая запись не предусмотрена синтаксисом языка, однако позволяет визуально структурировать программу и облегчает понимание и проверку правильности алгоритма. Поэтому мы настаиваем на применении такого приема.
Условные операторы.
3.1.1 Оператор if-else.
Условный оператор if-else предназначен для изменения последовательности выполнения операторов программы в зависимости от выполнения условия (т.е. для принятия решений) и имеет вид (синтаксис):
if (условие)
| Например:
| if (x>y)
| оператор1
|
| {max=x; y=0;}
| [else
|
| else
| оператор2]
|
| {max=y; x=0;}
| Оператор if выполняется следующим образом (семантика):
1. Вычисляется условие.
2. Если оно истинно (¹0), то
выполняется оператор1.
Иначе
Если есть else-часть
выполняется оператор2.
Иначе
переход к следующему после if оператору
|
| В примере в переменную max заносится большее из x и y, а меньшее обнуляется (см.2.4.3.3). Скобки {}, образующие блоки, здесь существенны, поскольку по синтаксису после if и else должен стоять только один оператор.
Операторы, входящие в if, сами могут содержать оператор if (т.е. оператор if может быть вложенным). Если у вложенного if нет своей else-части, то можно неоднозначно толковать, куда относится else-часть - ко внешнему или внутреннему if. В Си else всегда относят к ближайшему if, у которого нет своего else. Для изменения этого порядка используют блоки.
Пример 7. Сравним для иллюстрации два оператора if:
if (a>b)
|
| if (a>b)
| if(c<0)
|
| { if(c<0)
| x += 3;
|
| x += 3;
| else
|
| }
| x += 2;
|
| else
|
|
| x += 2;
|
В первом операторе else относится к внутреннему if, а во втором - к внешнему. Совет: всегда заключайте внутренний if в скобки.
3.1.2 Оператор else-if.
Для многоступенчатого принятия решений используют конструкцию else-if (синтаксис):
if (условие1)
оператор1
else if (условие2)
оператор2
else if (условие3)
оператор3
·························
[else оператор]
Семантика: условия операторов “if” проверяются сверху вниз. Как только встречается истина, выполняется соответствующий оператор и последовательность проверок прекращается. Последняя else-часть срабатывает, если все предыдущие условия ложны. Эта часть может отсутствовать.
Пример 8. Пусть reit - рейтинг студента после сессии. Предлагаемый оператор показывает, кто он такой.
if (reit >= 45)
cout << "Вы - отличник!\n";
else if (reit > 34)
cout << "Вы неплохо учитесь!\n";
else if (reit > 25)
{ if (reit > 29)
cout << "Вам нужно подтянуться!\n";
else
cout << "Такие инженеры нам не нужны!\n";
}
else
cout << "Вас давно ждут в призывном пункте!\n ";
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|