- •ЗАМЕЧАНИЕ <...> в описании правил записи (формата) конструкций языка означают понятие языка, в программе не записываются.
- •Пример
- •Формат
- •Значение
- •Содержание
- •Формат
- •if ( <выражение> )
- •Форма представления одного данного
- •Ввод двумерного массива
- •Вопрос? А как же передать результаты работы в вызывающую процедуру, если реально можно передать только одно значение?
- •Вызывающая
- •Вызываемая
- •ВЫЧИСЛЕНИЕ КВАДРАТИЧНОЙ ФОРМЫ
l – для double.
Форма представления одного данного
[ + | – ] [ a ] [ .b ] [<порядок>]
Порядок – [ e | E ] [ + | – ] <целое без знака> Длина мантиссы >= одной цифры.
Пример:
|
Внешнее представление |
Спецификация |
|
Значение в памяти |
|
||
|
–2.347e–5 |
f |
|
–2.347 e–5 |
|
||
|
–236.485 |
f |
|
–2.36485e+2 |
|
||
|
2e10 |
f |
|
2e10 |
|
||
|
.345 |
|
f |
|
0.345 |
|
|
|
–2. |
F |
|
–2.0 |
|
||
|
–94.56e–5 |
lf |
|
–9.456e–4 |
|
||
|
–94.56e+5 |
lf |
|
–9.456e+6 |
|
||
|
ВЫВОД (нормальная форма) |
|
|
||||
|
Формат спецификации |
% [W] [.D] [l] f |
|
|
|||
|
D – число знаков после. |
|
|
|
|
|
|
|
Внешнее представление: |
[–] X...X . X... |
|
|
|||
|
По умолчанию D = 6. При D = 0 точка не выводится. |
|
|
||||
|
Если число дробных разрядов > D, то результат округляется. |
|
|||||
|
Пример. |
|
|
|
|
|
|
|
Значение в памяти |
|
Спецификация |
|
Внешнее представление |
|
|
|
–385.476 |
|
f |
|
–385.476000 |
|
|
|
2. |
|
f |
|
2.000000 |
|
|
|
1e–7 |
|
f |
|
0.000000 |
|
|
|
1e10 |
|
f |
|
10000000000.000000 |
|
|
|
–385.476 |
|
10f |
|
–385.476000 |
|
|
|
385.476 |
|
10f |
|
385.476000 |
|
|
|
385.476 |
|
15f |
|
_ _ _ _ _385.476000 |
|
|
|
-385.476 |
|
15f |
|
_ _ _ _-385.476000 |
|
|
|
2.5 |
|
10.4f |
|
_ _ _ _2.5000 |
|
|
|
–6.48756 |
|
10.4f |
|
_ _ _–6.4876 |
|
|
|
0.000346 |
|
10.5f |
|
_ _ _0.00035 |
|
|
|
–0.34844 |
|
6.4f |
|
–0.3484 |
|
|
|
38.56 |
|
.0f |
|
39 |
|
|
|
38.45 |
|
.0f |
|
38 |
|
6.1.3 Спецификация е (вещественные числа в экспоненциальной форме с плавающей точкой).
ВВОД Полностью аналогичен спецификации f. ВЫВОД (показательная форма)
Формат спецификации |
% [W] [.D] [l] { e|E } |
D – количество значащих цифр мантиссы. |
|
По умолчанию D=6. При D=1 точка не выводится. |
|
Внешнее представление: |
[–] X . X...{e|E}<порядок> |
34
Пример.
Значение в па- |
Специфика- |
Внешнее представление |
мяти |
ция |
|
2.3 |
e |
2.30000e+00 |
2.3 |
5e |
2.300000e+00 |
237.486 |
10.4 e |
2.3749e+02 |
237.486 |
10.4E |
2.3749E+02 |
–96.56e–105 |
15.5e |
–9.65600e–104 |
2.37e25 |
10.1e |
_ _ _2.4e+25 |
–24.866e–10 |
.4e |
–2.487e–09 |
6.1.4Спецификация g.
Спецификация используется как е и f, но исключает вывод незначащих нулей. Удобно, когда нельзя предсказать диапазон выводимых значений.
D – число значащих цифр мантиссы. Конечные нули не выводятся.
Универсальный формат. |
f при 10**( –4 ) <= |x| < 10**D |
|
||
Пример. |
|
|
|
|
Значение в памяти |
|
Спецификация |
ние |
Внешнее представле- |
|
|
|
|
|
0.000485456 |
|
.5g |
|
0.00048546 |
0.000000123456 |
|
.5g |
|
1.2346e–07 |
4.456789e–5 |
|
.5g |
|
4.4568e–05 |
4.456789 |
|
.5g |
|
4.4568 |
4.456 e 4 |
|
.5g |
|
44560 |
4.456 e 6 |
|
.5g |
|
4.456e+06 |
0.4456 |
|
.5g |
|
0.4456 |
4.456 e6 |
|
.5G |
|
4.456E+06 |
6.1.5Вывод символьной информации.
ВВОД не рассматриваем (рассмотреть самостоятельно). ВЫВОД: 2 способа.
• Символы управляющей строки, не входящие в спецификации и управляющие символы печатаются текстуально. Для вывода символа % надо %%.
Пример:
printf ("Число успешных сеансов составляет %d % % \n", kol ); printf( "Рост: %.1f[см] Вес: %.3f[кг] \n", height, weight);
На экране Число успешных сеансов составляет 72%
Рост: 181.5[см] Вес: 75.600[кг]
• Спецификация % [w] c – значением аргумента является символ.
Пример:
printf ( "L = %d %5c M = %d \n", l, ' ', m);
35
На экране
L = 15– – – – –M = 12
6.2 Функции getchar(), putchar(), getch()
1. Функция getch() – это функция чтения одного символа со стандартного устройства ввода (то есть клавиатуры), без вывода считанного символа в стандартный поток
вывода (на экран). |
|
|
|
Прототип функции |
int getch (void); |
объявлен в файле <conio.h>). |
|
Пример: |
char ch; |
|
|
|
if ( ( ch = getch () ) = = 27 ) |
|
|
|
printf ("Вы нажали Escape\n"); |
В данном случае с клавиатуры читается один символ, заносится в переменную ch и проверяется на соответствие коду клавиши Esc (27) – и все это одним выражением.
Пример: char ch; ch = getch();
printf(“Символ %c имеет код %d\n”, ch, ch);
2. Функция getchar () считывает очередной символ из стандартного входного потока (с клавиатуры) и копирует этот символ в стандартный выходной поток (на экран).
Прототип функции |
int getchar (void); объявлен в файле <conio.h>). |
||
Пример: #include <stdio.h> |
|||
void main(void) |
|
||
{ |
int c; |
|
|
/* Note that getchar reads from stdin and is line buffered; this means it will not return until |
|||
you press ENTER. */ |
|
||
while ( ( c = getchar() ) != '\n' ) |
|||
|
|
printf( "%c", c ); } |
|
|
В результате выполнения этой программы на экране появится строка введен- |
||
ных символов, второй раз эта строка появится после нажатия Enter. |
|||
3. |
Функция putchar() записывает символ в стандартный поток вывода (на экран). |
||
Прототип функции |
int putchar ( int c); объявлен в файле <conio.h>). |
||
Пример: |
char ch; |
|
printf ( "Введите предложение")' while ( ( ch = getch () ) ! = '\n' )
putchar (ch);
36