ЯП Лекция 2.ppt
- Количество слайдов: 29
Пример
Управляющая строка содержит компоненты трех типов: обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея); спецификации преобразования, каждая из которых вызывает вывод на экран очередного аргумента из последующего списка; управляющие символьные константы. Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразование. Между знаком % и символом преобразования могут встречаться другие знаки в соответствии со следующим форматом: % [признаки] [ширина_поля] [точность] [F|N|h|l|L] c_n Все параметры в квадратных скобках не являются обязательными. На месте параметра c_n (символ преобразования) могут быть записаны: с - значением аргумента является символ; d или i - значением аргумента является десятичное целое число; е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1. 23 e+2; Е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1. 23 E+2; f - значением аргумента является вещественное десятичное число с плавающей точкой; g (или G) - используется, как е или f, и исключает вывод незначащих нулей; о - значением аргумента является восьмеричное целое число; s u - значением аргумента является беззнаковое целое число; - значением аргумента является строка символов (символы строки выводятся до тех пор, пока не встретится символ конца строки или же не будет, выведено число символов, заданное точностью); х - значением аргумента является шестнадцатеричное целое число с цифрами 0, . . . , 9, а, b, с, d, е, f; X - значением аргумента является шестнадцатеричное целое число с цифрами 0, . . . , 9, А, В, С, О, Е, F; р - значением аргумента является указатель; n - применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции строки (отображаемой на экране), в которой записана спецификация %n.
Например, в результате вызова функции: printf("t. Computern%dn", i); сначала выполняется горизонтальная табуляция (t), т. е. курсор сместится от края экрана, затем на экран будет выведено слово Computer, после этого курсор переместится в начало следующей строки (n), затем будет выведено целое число i по формату %d (десятичное целое), и, окончательно, курсор перейдет в начало новой строки (n). Напечатать строку символов можно и так: printf("Это строка символов");
Форматированный ввод данных Функция scanf( ) (прототип содержится в файле stdio. h) обеспечивает форматированный ввод. Ее можно записать в следующем формальном виде: scanf("управляющая строка", аргумент_1, аргумент_2, . . . ); Аргументы scanf( ) должны быть указателями на соответствующие значения. Для этого перед именем переменной записывается символ &. scanf("%d", &a); scanf("%c", &b); scanf("%d%c%f", &a, &b, &t);
Пример
Операции
Структурированные типы данных Массивы определяются так же, как и переменные: int a[100]; char b[20]; float d[50]; Двумерный массив представляется как одномерный, элементами которого так же являются массивы. Например, определение char а[10][20]; задает такой массив. Пусть задан массив: int a[2][3]; Тогда элементы массива а будут размещаться в памяти следующим образом: a[0][0], a[0][1], a[0][2], a[1][0], a[1][1], a[1][2].
Массивы Язык Си позволяет инициализировать массив при его определении. Для этого используется следующая форма: тип имя_массива[. . . ]. . . [. . . ] = {список значений}; Примеры: int a[4] = {0, 1, 2, 3, 4}; char ch[2] = {'d', 'e', '9'}; int b[1][2] = {{1, 2}, {3, 4}, {5, 6}};
Пример
Строки символов char array[] = "Строка"; char s[ ] = {'С', 'т', 'р', 'о', 'к', 'а', ' '}; Если string - массив символов, то ввести строку с клавиатуры можно так: gets(string); (ввод оканчивается нажатием клавиши
Пример
Функции работы со строками Отметим также, что для работы со строками существует специальная библиотека функций, прототипы которых находятся в файле string. h. Если string 1 и string 2 - массивы символов, то вызов функции strcpy( ) имеет вид: strcpy(string 1, string 2); Эта функция служит для копирования содержимого строки string 2 в строку string 1. Массив string 1 должен быть достаточно большим, чтобы в него поместилась строка string 2. Так компилятор не отслеживает этой ситуации, то недостаток места приведет к потере данных. Вызов функции strcat( ) имеет вид: strcat(string 1, string 2); Эта функция присоединяет строку string 2 к строке string 1 и помещает ее в массив, где находилась строка string 1, при этом строка string 2 не изменяется. Нулевой байт, который завершал первую строку, заменяется первым байтом второй строки. Функция strlen( ) возвращает длину строки, при этом завершающий нулевой байт не учитывается. Если a - целое, то вызов функции имеет вид: a = strlen(string); Функция strcmp(string 1, string 2 ) сравнивает две строки и возвращает 0, если они равны.
Пример
Пример
Операции увеличения и уменьшения Если N = 5, то х = N++; устанавливает х равным 5, а х = ++N; полагает х равным 6.
Бинарные операции
Операторы - условные операторы, к которым относятся оператор условия if и оператор выбора switch; - операторы цикла (for, while, do while); - операторы перехода (break, continue, return, goto);
Оператор if (выражение) оператор-1; [else оператор2; ] if (i < j) i++; else { j = i-3; i++; }
Сложный IF int main ( ) { int t=2, b=7, r=3; if (t>b) { if (b < r) r=b; } else r=t; return (0); }
Оператор switch int i=2; switch (i) { case 1: i case 2: i case 0: i case 4: i default: } += 2; *= 3; /= 2; -= 5; ;
Оператор break обеспечивает прекращение выполнения самого внутреннего из объединяющих его операторов switch, do, for, while. После выполнения оператора break управление передается оператору, следующему за прерванным
Оператор while (выражение) тело ; int i, j, k; . . . i=0; j=0; k=0; do { i++; j--; while (a[k] < i) k++; } while (i<30 && j<-30);
Оператор for for ( выражение 1 ; выражение 2 ; выражение 3 ) тело int main() { int i, b; for (i=1; i<10; i++) b=i*i; return 0; } int main() { int top, bot; char string[100], temp; for ( top=0, bot=100 ; top < bot ; top++, bot--) { temp=string[top]; string[bot]=temp; } return 0; } for (; ; ) {. . . break; . . . }
Оператор continue int main() { int a, b; for (a=1, b=0; a<100; b+=a, a++) { if (b%2) continue; . . . /* обработка четных сумм */ } return 0; }
Цикл с постусловием (do — while)
Переключатель
Задача: каждое слово строки вывести на экран в отдельную строку
Вывод несовпадающих символов
Математические функции abs(i) fabs(x) sqrt(x) pow(x, y) log(x) log 10(x) sin(x) cos(x) asin() math. h


