ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 13.12.2020
Просмотров: 4297
Скачиваний: 28
Глава 27. Математические функции <math.h>
321
x = log(y);
printf("ln y = %f\n", x);
return 0;
}
27.4. Гиперболические функции
В стандартной библиотеке определены гиперболические функции
cosh
,
sinh
и
tanh
, которые имеют следующие прототипы:
double cosh(double x); /* возвращает cosh x */
double sinh(double x); /* возвращает sinh x */
double tanh(double x); /* возвращает tanh x */
27.5. Степень и квадратный корень
В стандартной библиотеке определена степенная функция
pow
,
которая имеет следующий прототип:
double pow(double x, double y); /* возвращает x^y */
Также в стандартной библиотеке определена функция
sqrt
для
нахождения квадратного корня из числа, которая имеет следую-
щий прототип:
double sqrt(double x); /* возвращает квадр. корень из x */
В листинге 27.3 приведен пример использования функций
pow
и
sqrt
.
Листинг 27.3. Вычисление степени и квадратного корня числа
#include <stdio.h>
#include <math.h>
int main()
{
double d, r;
d = pow(2.2, 2);
printf("d = %lf\n", d); /* d = 4.84 */
Часть III. Стандартная библиотека языка программирования C
322
r = sqrt(d);
printf("r = %lf\n", r); /* r = 2.2 */
return 0;
}
27.6. Экспонента и мантисса
Для определения мантиссы и экспоненты числа с плавающей
точкой предназначена функция
frexp
, которая имеет следующий
прототип:
double frexp(double x, int *p);
Эта функция находит такие мантиссу
m
и экспоненту
e
числа
x
,
что:
x = m * 2^e
и, кроме того, мантисса находится в диапазоне:
0.5 m < 1.0;
После этого функция
frexp
возвращает мантиссу
m
, а по адресу
p
записывает экспоненту
е
.
Для вычисления числа с плавающей точкой по его мантиссе и
экспоненте предназначена функция
ldexp
, которая имеет сле-
дующий прототип:
double ldexp(double x, int e); /* возвращает x*2^e */
В листинге 27.4 приведен пример использования функций
frexp
и
ldexp
.
Листинг 27.4. Работа с мантиссой и экспонентой
#include <stdio.h>
#include <math.h>
int main()
{
int n;
double d, e;
d = ldexp(3, 2);
Глава 27. Математические функции <math.h>
323
printf("d = %lf\n", d); /* d = 12 */
e = frexp(d, &n);
printf("m = %d, e = %lf\n", n, e); /* m = 4, e = 0.75 */
return 0;
}
27.7. Целая и дробная часть числа
с плавающей точкой
Для определения целой и дробной части числа с плавающей точ-
кой предназначена функция
modf
, которая имеет следующий про-
тотип:
double modf(double x, int *a);
Функция возвращает дробную часть числа
x
, а по адресу
a
запи-
сывает целую часть этого числа. Например:
double n, d;
d = modf(2.5, &n); /* n = 2.0, d = 0.5 */
27.8. Целые границы числа
с плавающей точкой
Для определения наименьшего целого числа, которое больше за-
данного числа с плавающей точкой, используется функция
ceil
,
которая имеет следующий прототип:
double ceil(double x);
Для нахождения наибольшего целого числа, которое меньше за-
данного числа с плавающей точкой, используется функция
floor
,
которая имеет следующий прототип:
double floor(double x);
Например:
double c, f;
c = ceil(2.5); /* c= 3.0 */
f = floor(2.5); /* f = 2.0 */
Часть III. Стандартная библиотека языка программирования C
324
27.9. Остаток от деления
Для нахождения остатка от деления двух чисел с плавающей точ-
кой предназначена функция
fmod
, которая имеет следующий про-
тотип:
double fmod(double x, double y);
Функция возвращает остаток от деления
x
на
y
. Например:
double r;
r = fmod(3.5, 1.1); /* r = 0.2 */
27.10. Абсолютное значение числа
Для определения абсолютного значения числа с плавающей точ-
кой предназначена функция
fabs
, которая имеет следующий про-
тотип:
double fabs(double x);
Например:
double m;
m = fabs(-3.5); /* m = 3.5 */
Заметим, что в стандартной библиотеке языка программирования
С++ также перегружена функция
abs
, которая находит абсолют-
ное значение числа с плавающей точкой для значения любого
типа с плавающей точкой.
Г Л А В А
28
Функции классификации
символов <ctype.h>
28.1. Определение типа символа
Множество символов, каждый из которых удовлетворяет некото-
рому условию, называется классом символов. Условие, которое
определяет класс символов, называется правилом классификации
символов. Определение класса символов, используя заданное
правило классификации, называется классификацией символов.
В стандартной библиотеке языка программирования C для клас-
сификации символов определены следующие функции:
int isalnum(int c); /* буква или цифра? */
int isalpha(int c); /* буква? */
int isupper(int c); /* прописная буква? */
int islower(int c); /* строчная буква? */
int iscntrl(int c); /* управляющий символ? */
int isdigit(int c); /* десятичная цифра? */
int isxdigit(int c); /* шестнадцатеричная цифра? */
int isspace(int c); /* пробельный символ? */
int ispunct(int c); /* знак препинания? */
int isprint(int c); /* печатный символ? */
int isgraph(int c); /* буква, цифра, знак препинания? */
Единственный параметр
c
каждой из этих функций должен со-
держать символ, тип которого проверяется. Все эти функции воз-
вращают ненулевое значение — если условие проверки выполня-
ется, а в противном случае они возвращают нулевое значение.