Лекция №3 Структура программы. Стандартный ввод и вывод

advertisement
Лекция №3
Структура программы.
Стандартный ввод и вывод
Схема подготовки исполняемой
программы
Исходный
текст на Си
(файлы *.c)
Препроцессор
Компилятор
Объектный
код
программы
(файлы *.obj)
Заголовочные
файлы
(файлы *.h)
Компоновщик
(Linker)
Библиотеки
(файлы *.lib)
Исполняемая
программа
(файл .exe)
Подключение заголовочных файлов
#include <имя-файла>
Поиск файла происходит в каталогах библиотек
#include "имя файла"
Поиск файла происходит в текущем каталоге, затем в
каталоге библиотек
Пример:
#include <stdio.h>
Стандартный ввод/вывод
Библиотека ввода/вывода: stdio.h (standard input/output)
#include <stdio.h>
Стандартный ввод – ввод с клавиатуры
Стандартный вывод – вывод на экран
Форматированный вывод
Функция форматированного вывода:
printf(<форматная строка> [, <список аргументов>])
Пример простейшего использования printf:
#include <stdio.h>
void main( )
{
printf("Hello, World!\n");
}
Форматированный вывод
Форматная строка состоит из символов и
спецификаторов преобразования:
printf("Amount= %d, summa=%f", n, s);
Обычные
символы
Результат:
Amount= 4, summa=12.34
Спецификатор
преобразования
Форматированный вывод
Общий вид спецификатора преобразования:
%[флаги][<ширина>][.<точность>][<модификатор>]<тип>
Пример:
printf("%-8.2lf“, (double) 3.14159265359);
Результат:
3.14
Печать символа «%» на экран:
printf("GMP increase: %.1f%%", 6.2);
Результат:
GMP increase: 6.2%
Форматированный вывод
Основные спецификаторы типа
Символ
Тип аргумента Вид печати
d,i
int
знаковая десятичная запись
o
unsigned int
беззнаковая восьмеричная запись
x, X
unsigned int
беззнаковая шестнадцатеричная
запись
u
unsigned int
Беззнаковое десятичное целое
c
int
Единичный символ
s
char *
Строка (последовательность
символов)
f
double
Запись вида: [-]dddd.dddd
e, E
double
Запись вида: [-]d.dddde[знак]ddd
(экспоненциальная форма)
Форматированный вывод
Основные спецификаторы типа
Пример #1:
float c = 48.3;
int k = -83;
float e = 16.33;
printf("c=%5.2f k=%5d e=%8.2f e=%11.4e", c, k, e, e);
Результат:
c=48.30 k= -83 e=
16.33 e= 1.6330e+01
Пример #2
int x = 95;
printf("x=%d x=%x(hex) x=%X(HEX) x=%o(oct)", x, x, x, x);
Результат:
x=95 x=5f(hex) x=5F(HEX) x=137(oct)
Форматированный вывод
Ширина поля – целое положительное число, определяющее длину
(в позициях) представления вводимого значения
Точность – целое положительное число, определяющее количество
цифр, выводимых после запятой.
Пример:
float c = 48.3;
int k = -83;
float e = 16.33;
printf("c=5.2f k=%5d
e=%8.2f
Результат:
c=48.30 k=
16.33
-83
e=
e=%11.4e", c, k, e, e);
e= 1.6330e+01
Форматированный вывод
Модификатор –
определяет
размер аргумента
Пример:
long max = 2147483647;
printf("Long max=%ld",
max);
Модификатор Значение
h
Аргумент
печатается как
short
l (строчная L)
Аргумент
печатается как
long
L
Аргумент
печатается как
long double
Форматированный вывод
Флаги
Символ
Значение
-
указывает на то, что преобразованный аргумент должен быть
прижат к левому краю поля;
+
предписывает печатать число всегда со знаком;
пробел
если первый символ - не знак, то числу должен предшествовать
пробел
0
указывает, что числа должны дополняться слева нулями до
всей ширины поля
#
указывает на одну из следующих форм вывода: для o первой
цифрой должен быть 0; для x или X ненулевому результату
должны предшествовать 0x или 0X; для e, E, f, g и G вывод
должен обязательно содержать десятичную точку
Форматированный вывод
Флаги
Пример #1:
int a = 48;
int b = 1234;
int c = 55;
int d = 3;
printf("%-5d|%5d|%+5d|%0+5d|", a,b,c,d);
Результат:
48
| 1234| +55|+0003|
Пример #2
int x = 95;
printf("x=%#x(hex) x=%#X(HEX) x=%#o(oct)", x, x, x);
Результат:
x=0x5f(hex) x=0X5F(HEX) x=0137(oct)
Форматированный ввод
Функция форматированного ввода:
scanf(<форматная строка> , <список аргументов>)
В форматную строку могут входить:
• пробелы и табуляции, которые игнорируются;
• обычные символы (кроме %);
• спецификации преобразования;
Общий вид спецификатора преобразования
%[*][<ширина>] <тип>
Ширина поля – целое число, определяющее максимальную
ширину поля.
«*» - игнорирование (пропуск) данного аргумента.
Форматированный вывод
Основные спецификаторы типа
Символ
Тип аргумента Вид печати
d
int
Десятичная запись
i
int
Целое (восьмеричное с нулем слева
или шестнадцатиричное с «0x» слева)
o
unsigned int
Восьмеричное (с нулем слева или без)
x
unsigned int
Шестнадцатиричное целое (с «0x»
слева или без)
u
unsigned int
Беззнаковое десятичное целое
c
int
Единичный символ
s
char *
Строка (последовательность символов)
e,f,g
float
Число с плавающей точкой (в виде
десятичной или экспоненциальной
форме)
Форматированный ввод
Пример:
int a,b;
float f;
scanf("%d %i %f", &a, &b, &f);
Ввод и вывод символов
Вывод символа:
putchar(<символ>)
Ввод символа:
getchar()
Пример:
#include <stdio.h>
void main()
{
char c;
c = getchar();
putchar(c);
putchar('\n');
}
Ввод и вывод строк
Вывод строки:
puts(<строка>)
Пример:
puts("Hello, world");
Ввод строки:
gets(<строка>)
Пример:
char s[50];
gets(s);
Download