Как подключить математические функции в c
Стандартная библиотека языка Си предоставляет ряд математических функций, которые определены в разных заголовочных файлах, но в основном определены в файле math.h .
Степерь числа. pow
Функция pow() , определенная в заголовочном файле math.h , возвращает степень числа:
#include #include int main(void) < printf("pow(2, 3) = %.f\n", pow(2, 3)); // 2 в степени 3 printf("pow(5, 2) = %.f\n", pow(5, 2)); // 5 в степени 2 return 0; >
Стоит отметить, что эта функция возвращает число типа double .
Для возведения в степень чисел типа float и long double также определены функции powf() и powl() соответственно.
Округление числа. round
Функция round() округляет число до ближайшего целого. В качестве параметра она принимает число типа double :
#include #include int main(void) < double n1 = 3.14; printf("round(%.2f) = %.2f\n", n1, round(n1)); // round(3.14) = 3.00 double n2 = 3.49; printf("round(%.2f) = %.2f\n", n2, round(n2)); // round(3.49) = 3.00 double n3 = 3.5; printf("round(%.2f) = %.2f\n", n3, round(n3)); // round(3.50) = 4.00 return 0; >
Квадратный корень. sqrt
Функция sqrt() возвращает квадратный корень числа типа double :
#include #include int main(void) < double n1 = 224; printf("sqrt(%.f) = %.f\n", n1, sqrt(n1)); // sqrt(224) = 15 double n2 = 36; printf("sqrt(%.f) = %.f\n", n2, sqrt(n2)); // sqrt(36) = 6 return 0; >
Для получения квадратного корня числа float также есть функция sqrtf() , а для числа типа long double — функция sqrtl()
abs
Функция abs , определенная в файле «stdlib.h», возвращает абсолютное значение числа
#include #include int main(void) < int m = -15; int n = 24; printf("abs(m) = %d \n", abs(m)); // abs(m) = 15 printf("abs(n) = %d \n", abs(n)); // abs(n) = 24 return 0; >
Для возвращения абсолютного значения чисел типов long и long long определены в «stdlib.h» функции labs и llabs соответственно. Для получения абсолютного значения для числа типа float в файле math.h определена функция fasbs . Все эти функцию работают аналогично abs()
Стандартные математические функции в языке Си
Математические вычисления не ограничиваются лишь арифметическими действиями. Кроме них, можно ещё встретить корни, модули, логарифмы, тригонометрические функции и пр. Научимся же использовать подобные функции в своих программах.
Для использования математических функций нужно подключить заголовочный файл math.h . В ней определено много различных функций, но мы пока рассмотрим следующие:
Некоторые математические функции
fabs(x) модуль числа x
sqrt(x) квадратный корень из числа x
sin(x) синус числа x (х в радианах)
cos(x) косинус числа x (х в радианах)
pow(x, y) вычисление x y
exp(x) вычисление e x
log(x) натуральный логарифм числа x
log10(x) десятичный логарифм числа x
- Все функции возвращают значение типа double .
- Параметры функций – вещественные числа( double ), но можно передавать и целые числа. При этом произойдёт неявное преобразование типа . Компилятор из целого числа, например 3, сделает вещественное 3.0.
#include #include // подключаем math.h int main (void)
Вычислить синус угла ввёденного с клавиатуры. Угол вводится в градусах.
#include #include // подключаем math.h int main (void) < double alpha, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("%.2f\n", sin_a); return 0; >
В этой программе есть о чём поговорить. Тригонометрические функции, которые определены в math.h работают с радианной мерой угла. Людям же привычнее работать с градусами. Поэтому в данной программе мы предварительно перевели значение из градусов в радианы. Если этого не сделать, результат получится неправильным. Проверьте это самостоятельно.
Неявное преобразование типов
При явном преобразовании типа мы в скобках перед значением указывали тип, к которому нужно привести данное значение. В неявном преобразовании этого делать не нужно. Компилятор автоматически подберёт необходимый тип. Неявное преобразование типов осуществляется в следующих случаях:
- перед передачей аргументов в функцию (как в нашем примере с корнем. Листинг 1.)
- выполнение арифметических операций с разными типами аргументов
- перед выполнением присваивания
- если выполняются арифметические операции с разными типами аргументов. Оба аргумента приводятся к большему типу.
Порядок типов: int < float < double - при присваивании. Значение справа от оператора присваивания приводится к типу переменной слева от оператора присваивания. При этом, если больший тип присваивается меньшему, то может произойти потеря точности.
Примеры: int+float будет автоматически преобразовано к float+float
float/int будет автоматически преобразовано к float/float
double*float будет преобразовано к double*double
int = double double будет преобразовано к int с потерей дробной части
float = int int будет преобразовано к float
Сохрани в закладки или поддержи проект.
Практика

Решите предложенные задачи: Для удобства работы сразу переходите в полноэкранный режим
Дополнительные материалы
- пока нет
Как подключить математические функции в c
В языке С++ имеется большое количество математических функций. Для их использования в тексте программы необходимо подключить заголовочный файл cmath (ранее использовался math.h).
Прототип и краткое описание
int abs(int i);
Возвращает абсолютное значение целого аргумента i .
double acos(double x);
Функция арккосинуса. Значение аргумента должно находиться в диапазоне от -1 до +1 .
double asin(double x) ;
Функция арксинуса. Значение аргумента должно находиться в диапазоне от -1 до +1 .
double atan(double x) ;
double atan2(double y, double x) ;
Функция арктангенса от значения y / x .
double ceil(double x);
Вычисляет ближайшее целое, не меньшее, чем аргумент x .
double cos(double x);
Функция косинуса. Аргумент задается в радианах.
double exp(double x);
Вычисляет значение (экспоненциальная функция).
double fabs(double x);
Возвращает абсолютное значение вещественного аргумента x двойной точности.
double floor(double x);
Находит наибольшее целое, не превышающее значение x. Возвращает его в форме double.
double fmod(double x, double y);
Возвращает остаток от деления нацело x на y .
double frexp(double value, int *exp);
Разбивает число с плавающей точкой value на нормализованную мантиссу и целую часть как степень числа 2 . Целочисленная степень записывается в область памяти, на которую указывает exp , а мантисса используется как значение, которое возвращает функция.
double hypot(double x, double y);
Вычисляет гипотенузу z прямоугольного треугольника по значениям катетов x , y : .
long labs(long x);
Возвращает абсолютное значение целого (длинного(!) целого) аргумента x .
double ldexp(double v, int e);
Возвращает значение выражения .
double log(double x);
Возвращает значение натурального логарифма ( ln x).
double log10(double x);
Возвращает значение десятичного логарифма ().
double modf(double value, double *iptr);
Разделяет число с плавающей точкой value на целую и дробную части. Целая часть записывается в области памяти, на которую указывает iptr , дробная часть является значением, возвращаемым функцией.
double poly(double x, int n, double c[ ]);
Вычисляет значение полинома: c[n]x n + c[n 1]x n -1 +…+ c[1]x +c[0].
double pow(double x, double y);
Возвращает значение , т.е. x в степени y .
double pow10(int p);
Возвращает значение 10 p .
double sin(double x);
Функция синуса. Угол задается в радианах.
double sinh(double x);
Возвращает значение гиперболического синуса для x .
double sqrt(double x);
Возвращает положительное значение квадратного корня .
double tan(double x);
Функция тангенса. Угол задается в радианах.
double tanh(double x);
Возвращает значение гиперболического тангенса для x .
Как пользоваться этой таблицей? Рассмотрим на примере sin X . Во второй колонке (прототип) написано:
double sin(double x);
Что это означает? Функция sin() возвращает результат типа double (тип результата указан перед именем функции); в качестве входного параметра этой функции также выступает значение типа double (текст в скобках — double x ).
Примеры использования этой функции:
Математическая библиотека языков C и C++
В стандартную математическую библиотеку языка Си (а, значит, и C++) входит множество специальных математических функций, которые нужно знать и уметь использовать. Для того, чтобы использовать эти функции в своей программе, необходимо подключить заголовочный файл, содержащий описания этих функций, что делается строчкой в начале программы:
#include
В языке C++ нужно указывать название заголовочного файла так:
#include
Функция от одного аргумента вызывается, например, так: sin(x) . Вместо числа x может быть любое число, переменная или выражение. Функция возвращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:
y = sin(x);
printf("%lf", sqrt(2));
| Функция | Описание |
|---|---|
| Округление | |
| round | Округляет число по правилам арифметики, то есть round(1.5) == 2 , round(-1.5) == -2 |
| floor | Округляет число вниз (“пол”), при этом floor(1.5) == 1 , floor(-1.5) == -2 |
| ceil | Округляет число вверх (“потолок”), при этом ceil(1.5) == 2 , ceil(-1.5) == -1 |
| trunc | Округление в сторону нуля (отбрасывание дробной части), при этом trunc(1.5) == 1 , trunc(-1.5) == -1 |
| fabs | Модуль (абсолютная величина) |
| Корни, степени, логарифмы | |
| sqrt | Квадратный корень. Использование: sqrt(x) |
| cbrt | Кубический корень. Использование: cbrt(x) |
| pow | Возведение в степень, возвращает a b . Использование: pow(a,b) |
| exp | Экспонента, возвращает e x . Использование: exp(x) |
| log | Натуральный логарифм |
| log10 | Десятичный логарифм |
| Тригонометрия | |
| sin | Синус угла, задаваемого в радианах |
| cos | Косинус угла, задаваемого в радианах |
| tan | Тангенс угла, задаваемого в радианах |
| asin | Арксинус, возвращает значение в радианах |
| acos | Арккосинус, возвращает значение в радианах |
| atan | Арктангенс, возвращает значение в радианах |
Также в файле cmath есть набор полезных числовых констант, например, константа M_PI хранит значение числа \(\pi\).
В компиляторе Visual C++ для использования этих констант необходимо объявить директиву препроцессора _USE_MATH_DEFINES перед подключения заголовочного файла cmath .
#define _USE_MATH_DEFINES #include
Деление действительных чисел
Для действительных чисел определены операции сложения, вычитания, умножения и деления.
При этом операция деления выполняется по-разному для переменных и констант целочисленного типа и для переменных и констант действительных типов. В первом случае деление производится нацело с отбрасыванием дробной части, во втором случае — деление производится точно и результатом является действительное число. Более точно, если делимое и делитель одновременно являются целочисленными константами или переменными целочисленных типов, то деление будет целочисленным, а если хотя бы одно из них действительное, то деление будет действительным. Например:
printf(«%lf\n», 10 / 3);
printf(«%lf\n», 10. / 3);
printf(«%lf\n», 10 / 3.);
printf(«%lf\n», 10. / 3.);
выведет 3 в первой строке и 3.33333 в остальных строках.
Результат выполнения деления не зависит от того, какой переменной будет присвоен результат. Если написать double a = 10 / 3; , то переменная a будет равна 3, так как деление 10/3 будет целочисленным, независимо от того, чему будет присвоен результат.