Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

37.ИНФОРМАТИКА Book си

.pdf
Скачиваний:
41
Добавлен:
23.03.2016
Размер:
1 Мб
Скачать
☆

Приложение 1. Стандартные заголовочные файлы

81

 

 

Функции работы со строками

Ниже приведены прототипы функций:

char *strcat (char *dest, char *src); char *strchr (char *s, int ch);

int strcmp (char *s1, char *s2); char *strcpy (char *dest, char *src); char *strdup (char *s);

int stricmp (char *s1, char *s2); unsigned strlen (char *s);

char *strlwr (char *s);

char *strncat (char *dest, char *src, unsigned n); int strncmp (char *s1, char *s2, unsigned n); char *strncpy (char *dest, char *src, unsigned n); int strnicmp (char *s1, char *s2, unsigned n); char *strnset (char *s, int ch, unsigned n);

char *strrchr (char *s, int ch); char *strrev (char *s);

char *strset (char *s, int ch); char *strstr (char *s1, char *s2); char *strupr (char *s);

Во всех прототипах:

dest — строка, над которой совершается действие;

src — строка, из которой осуществляется копирование;

s, s1, s2 — строки;

ch — символ;

n — максимальное количество символов, которое необходимо скопировать, сравнить и т.д.

Функции strcat, strcpy, strncat и strncpy возвращают указатель на строку dest, которая изменяет свое значение.

Функции strchr, strrchr и strstr возвращают указатель на найденный символ строки (начало подстроки). Если символ (подстрока) не найден, то функции возвращают NULL.

Функции strcmp, stricmp, strncmp и strnicmp возвращают целое число, которое:

–меньше нуля, если первая строка меньше второй,

–равно нулю, если строки равны (идентичны),

81

82 Си и Си++

– больше нуля, если первая строка больше второй.

Функция strdup выделяет область памяти (через вызов функции malloc), копирует туда строку и возвращает указатель на нее.

Функция strlen возвращает длину строки, не учитывая нулевой символ.

Функции strlwr, strnset, strrev, strset и strupr воз-

вращают указатель на преобразованную строку.

П1.4 Проверка и преобразование символов

(ctype.h)

Функция

Краткое описание

isalnum

проверка на латинскую букву или цифру

isalpha

проверка на латинскую букву

isascii

проверка на символ из набора кодировки ASCII

iscntrl

проверка на управляющий символ

isdigit

проверка на десятичную цифру

isgraph

проверка на печатный символ, исключая пробел

islower

проверка на латинскую букву нижнего регистра

isprint

проверка на печатный символ

ispunct

проверка на знак пунктуации

isspace

проверка на пробельный символ

isupper

проверка на латинскую букву верхнего регистра

isxdigit

проверка на шестнадцатеричную цифру

toascii

преобразование символа в код ASCII

tolower

преобразование латинских букв в нижний регистр

toupper

преобразование латинских букв в верхний регистр

Прототипы данных функций содержатся в файле ctype.h.

П1.5 Форматные преобразования данных (stdlib.h)

Функция

Краткое описание

atof

преобразование строки в число типа float

atoi

преобразование строки в число типа int

atol

преобразование строки в число типа long

strtod

преобразование строки в число типа double

strtol

преобразование строки в число типа long

strtoul

преобразование строки в число типа unsigned long

ecvt

преобразование числа типа double в строку (как %e)

fcvt

преобразование числа типа double в строку (как %f)

gcvt

преобразование числа типа double в строку (как %g)

82

 

 

Приложение 1. Стандартные заголовочные файлы

83

 

 

 

 

 

 

 

 

 

 

 

itoa

 

преобразование числа типа int в строку

 

 

ltoa

 

преобразование числа типа long в строку

 

 

ultoa

 

преобразование числа типа unsigned long в строку

 

Прототипы данных функций содержатся в файле stdlib.h.

П1.6 Математические функции (math.h)

Функция

Краткое описание

abs

вычисление абсолютного значения выражения типа int

acos

вычисление арккосинуса выражения

asin

вычисление арксинуса выражения

atan

вычисление арктангенса выражения

atan2

вычисление арктангенса от y/x

cabs

вычисление абсолютного значения комплексного числа

ceil

вычисление наименьшего целого числа, большего или равного x

cos

вычисление косинуса выражения

cosh

вычисление гиперболического косинуса выражения

ехр

вычисление экспоненты выражения

fabs

вычисление абсолютного значения выражения типа double

floor

вычисление наибольшего целого числа, меньшего или равного x

fmod

вычисление остатка от деления x на y

labs

вычисление абсолютного значения выражения типа long

log

вычисление натурального логарифма выражения

log10

вычисление логарифма выражения по основанию 10

modf

разложение x на дробную и целую часть.

pow

вычисление x в степени у

sin

вычисление синуса выражения

sinh

вычисление гиперболического синуса выражения

sqrt

вычисление квадратного корня выражения

tan

вычисление тангенса выражения

tanh

вычисление гиперболического тангенса выражения

pow10

вычисление десятичной степени выражения

Прототипы данных функций содержатся в файле math.h.

П1.7 Динамическое распределение памяти (alloc.h)

Библиотека языка Си предоставляет механизм распределения динамической памяти. Этот механизм позволяет динамически (по мере возникновения необходимости) запрашивать из программы дополнительные области оперативной памяти. Следующие функции используются для динамического распределения памяти:

83

84

Си и Си++

 

 

 

 

 

 

 

Функция

Краткое описание

 

calloc

выделение памяти для массива

 

free

освобождение блока памяти, выделенного посредствам данных

 

 

функций

 

malloc

выделение блока памяти

 

realloc

изменение размера ранее выделенного блока путем его перераз-

 

 

мещения

Прототипы данных функций содержатся в файле alloc.h.

В Си++ рекомендуется вместо данных функций использовать опе-

раторы new и delete.

П1.8 Графика Borland C++ (graphics.h)

Прежде чем использовать графические функции, необходимо установить видеоадаптер в графический режим. Для установки (инициализации) видеоадаптера служит функция initgraph. Ее прототип:

void initgraph(int *driver, int *mode,

char *path);

Работа с графикой в Borland C++ реализована так же, как и в Turbo Pascal. Почти все прототипы графических функций совпадают по имени и смыслу с графическими функциями Turbo Pascal.

Функция

Краткое описание

initgraph

инициализация графического режима

closegraph

закрытие графического режима

putpixel

установка цвета заданного пикселя экрана

line

отображение на экране прямой линии

circle

отображение на экране окружности

setcolor

установка текущего цвета

arc

отображение дуги окружности

drawpoly

отображение контура многоугольника

ellipse

отображение эллипса

linerel

отображение линии из текущей точки в точку, задавае-

 

мую относительным расстоянием

lineto

отображение линии из текущей точки в заданную точку

moveto

перемещение текущей точку в заданную точку

rectangle

отображение прямоугольника

setlinestyle

установка ширины и стиля линии

floodfill

заполнение замкнутого контура

setfillstyle

установка цвета и шаблона заполнения

bar

отображение заполненного прямоугольника

bar3d

отображение заполненного столбика

84

 

Приложение 1. Стандартные заголовочные файлы

85

 

 

 

 

 

 

 

 

 

fillelipse

отображение заполненного эллипса

 

 

fillpoly

отображение заполненного многоугольника

 

 

pieslice

отображение заполненного сектора круга

 

 

sector

отображение заполненного эллиптического сектора

 

 

getpixel

возвращение цвета пикселя в данной точке

 

 

outtext

отображение строки с текущей позиции

 

 

outtextxy

отображение строки с заданной позиции

 

 

settextjustify

установка режима выравнивания текста

 

 

setusercharsize

установка шрифта, стиля и коэффициента увеличения

 

 

текста

 

 

textheight

возвращение высоты строки в пикселях

 

 

textwith

возвращение ширины строки в пикселях

 

Прототипы данных функций содержится в файле graphics.h. В состав графического пакета также входят: библиотечный файл graphics.lib, драйверы графических устройств (*.bgi) и символьные шрифты (*.chr).

85

Приложение 2.

Приоритет и порядок выполнения операций

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

В таблице, приводимой ниже, операции расположены в порядке убывания приоритета. Операции с одинаковым приоритетом объединены в группы.

I

::

Доступ к глобальной переменной (Си++)

::

Обозначение члена структуры, объединения или класса

 

 

()

Вызов функций; Увеличение приоритета выражения

 

[]

Индексация (выбор элемента массива)

II

.

Выбор элемента структуры, объединения или класса

 

->

Выбор элемента структуры, объединения или класса по ука-

 

 

зателю

 

!

Логическое НЕ

 

~

Побитовое дополнение (обратный код)

 

-

Унарный минус (изменение знака)

 

+

Унарный плюс

 

--

Декремент

III

++

Инкремент

&

Получение адреса объекта

 

 

*

Взятие значения по указателю

 

(<тип>)

Явное преобразование типов

 

sizeof

Размер объекта

 

new

Выделение памяти (Си++)

 

delete

Освобождение памяти (Си++)

IV

.*

Выбор поля через указатель

->*

 

 

 

*

Умножение

V

/

Деление

 

%

Остаток от деления нацело

VI

+

Сложение

-

Вычитание

 

VII

<<

Сдвиг влево

>>

Сдвиг вправо

 

 

<

Меньше

VIII

>

Больше

<=

Меньше или равно

 

 

>=

Больше или равно

 

 

Приложение 2. Приоритет и порядок выполнения операций

87

 

 

 

 

 

 

 

 

 

 

 

IX

==

Равно

 

 

!=

Не равно

 

 

 

 

 

X

&

Побитовое И

 

 

XI

^

Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ

 

 

XII

|

Побитовое ИЛИ

 

 

XIII

&&

Логическое И

 

 

XIV

||

Логическое ИЛИ

 

 

XV

? :

Условное выражение (Арифметическое если)

 

 

 

= *= /=

 

 

 

 

%= += -

 

 

 

XVI

= <<=

Присваивание

 

 

 

>>= &=

 

 

 

 

^= |=

 

 

 

XVII

,

Запятая

 

87

Задание на лабораторные работы

Лабораторная работа № 1. Знакомство с Borland C.

Форматный ввод/вывод. Математическая библиотека math.h.

Написать программу, выводящую значение нижеприведенного выражения. Она должна работать следующим образом:

В начале работы программы на экран выводится строка, содержащая фамилию, имя и класс ученика. Далее выводится строка ―Введите a: ‖, после чего ожидается ввод значения a. Аналогично вводятся остальные переменные. Перед вводом переменной x выводятся ограничения на ее значение (ОДЗ). Условие на вхождение x в область допустимых значений не проверять. В завершение работы программа выводит на экран значение выражения.

Советы:

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

функцией взятия модуля от вещественного числа (переменной типа float) является fabs, а не abs.

Простейший пример:

#include <stdio.h> /* библиотека ввода/вывода*/ #include <math.h> /* математическая библиотека*/ main() {

float a;

/* объявление переменной а типа float */ printf("Введите а:");

scanf("%f",&a); /* ввод переменной a */ printf("y=%f\n",sin(a));

/* вывод строки "y=", значения

синуса a и перевод строки */

}

При написании программы могут понадобиться следующие функ-

ции: cos(x), sin(x), tan(x), atan(x), sqrt(x), pow(x,a), fabs(x), log(x). (см. Математические функции)

1.

y

sin x

a sin x

2b tg x

 

 

 

 

 

 

 

 

 

 

 

 

 

ln x2

2bx a2

 

 

 

 

 

2. y

 

 

 

x 6b

 

Задание на лабораторные работы

89

 

 

3. y

 

 

ln 4x2

 

2ax

a2

 

 

 

b2

 

 

 

 

 

4x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.

y

 

tg bx

 

 

 

 

 

 

a

 

b x

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.

y

log a

 

x2

 

2bx

 

a

 

 

 

 

 

 

 

 

 

 

a2

 

 

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.

y

 

ax

 

b

 

 

a

 

 

ax

 

 

 

 

b

b

 

a

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.

y

log

 

 

 

 

 

ba

 

 

 

 

 

 

 

 

 

a2

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8.

y

ln a sin x

 

b cos x

 

a

 

b

 

tg x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9. y

 

 

x2

 

 

a2

 

 

a

 

 

 

 

 

b

 

2

 

 

 

 

 

4bx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10.

y

log

 

 

 

 

 

 

sin ax

 

 

 

 

a2

 

 

 

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.

 

 

4x2

 

 

 

 

 

 

 

a2

b

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

2x

 

 

 

 

 

 

 

 

 

b

tg ax

 

 

 

 

 

 

 

 

ln x2

 

 

 

a2

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12.

y

 

 

 

 

 

a

 

 

 

 

 

b

 

 

 

 

 

 

 

2

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13.

y

 

tg ax

 

 

 

 

loga

cos x

 

 

 

b sin x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.

y

 

 

sin

 

 

 

 

x

 

 

 

 

 

 

b cos

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

a

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

a

 

x

 

 

 

 

 

 

 

a

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15.

y

 

 

log

 

 

 

 

 

 

4x2

2x a2

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

b

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа № 2. Разветвляющиеся алгоритмы

В данном задании требуется обратить особое внимание на вырожденные случаи. Программа не должна приводить к делению на нуль (см. программу для вычисления корней квадратного уравнения). В заданиях, где есть прямые, они могут быть и вертикальными ( b 0 ).

1. Даны действительные числа:

a1, a2 , b1, b2 , c1, c2 , d1, d2 . Найти ре-

шение системы уравнений:

 

 

 

 

 

a x2

b x

c y

d

 

0

1

1

1

1

 

 

a x2

b x

c y

d

2

0

2

2

2

 

 

2.Треугольник задан координатами своих вершин. Даны координаты четвертой точки. Определить, лежит ли эта точка внутри треугольника.

3.Задан закон движения материальной точки, записанный в параметрическом виде:

89

90

Си и Си++

 

 

x

x

 

 

v

 

 

t

 

ax

t 2

 

0

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

a y

 

y

y

 

v

 

t

 

 

t 2

 

0

y

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где известны начальная точка

 

 

x0 , y0

, скорость v vx , vy и ускоре-

ние a ax , ay . Необходимо найти время и место ―столкновения‖ ма-

териальной точки с преградой ax by c 0 , где a ,

b и c — задан-

ные параметры.

 

4. Даны коэффициенты трех прямых вида ax by

c 0 . Найти об-

щую точку пересечения, если ее нет, то вывести на экран, почему ее нет (например, ―Все прямые параллельны‖).

5. Найти корень кубического уравнения

x3

px

q 0, где корень

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

определяется по формуле x

 

 

q

q2

p3

 

 

q

 

 

q2

 

p3

3

 

2

 

 

4

 

27

 

 

 

3

 

2

 

4

 

27 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При вычислении кубический корень x решение кубического уравнения x x x значений.

3 a надо рассматривать как a , т.е. и для отрицательных

6.Даны три произвольных числа. Определить, можно ли построить треугольник с такими длинами сторон, и если можно, то ответить, является ли он остроугольным.

7.Заданы законы движения двух материальных точек, записанные

впараметрическом виде:

 

x

x

 

 

v

 

 

t

ax1

t 2

 

x

 

x

 

 

v

 

 

t

 

ax 2

t 2

 

 

 

01

x1

 

 

 

2

0 2

x 2

 

 

 

 

 

 

1

 

 

 

2

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

a y1

 

 

 

 

 

 

 

 

 

 

 

 

a y 2

 

 

 

y

y

 

v

 

t

 

t 2

 

y

 

y

 

v

 

t

 

 

t 2

 

 

 

01

y1

 

 

 

2

0 2

y 2

 

 

 

 

 

 

1

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где

известны

начальные

 

точки

x01 , y01

и

 

 

x02 , y02 ,

скорости

v1

vx1, vy1 и v2

 

 

vx 2 , vy 2

 

и ускорения a1

 

ax1 , ay1 и a2

 

ax 2 , ay 2 .

Необходимо найти время и место ―столкновения‖ двух материальных точек.

8. Дана прямая вида ax by c 0 и координаты двух точек. Определить, лежат ли эти точки по одну сторону от прямой и какая точка наиболее удалена от прямой.

9. Даны координаты центра окружности и

ее радиус.

Определить

точку

пересечения окружности с прямой,

заданной

уравнением

ax by

c 0 , где все ее коэффициенты известны.

 

90