Главная > Уроки > Стандартные математические функции в языке Си

Записывайся на этот курс на Stepike!

Стандартные математические функции в языке Си

Пожалуйста, приостановите работу AdBlock на этом сайте.

Математические вычисления не ограничиваются лишь арифметическими действиями. Кроме них, можно ещё встретить корни, модули, логарифмы, тригонометрические функции и пр. Научимся же использовать подобные функции в своих программах.

Для использования математических функций нужно подключить заголовочный файл math.h. В ней определено много различных функций, но мы пока рассмотрим следующие:

Некоторые математические функции

fabs(x) модуль числа x
sqrt(x) квадратный корень из числа x
sin(x) синус числа x (х в радианах)
cos(x) косинус числа x (х в радианах)
pow(x, y) вычисление xy
exp(x) вычисление ex
log(x) натуральный логарифм числа x
log10(x) десятичный логарифм числа x

Два важных момента.

  • Все функции возвращают значение типа double.
  • Параметры функций – вещественные числа(double), но можно передавать и целые числа. При этом произойдёт неявное преобразование типа. Компилятор из целого числа, например 3, сделает вещественное 3.0.

Примеры.
Даны длины катетов прямоугольного треугольника. Вычислить длину гипотенузы. Простая задачка на знание теоремы Пифагора.

Листинг 1.

#include <stdio.h>
#include <math.h> // подключаем math.h
int main (void) {
  int a, b, c2;

  scanf("%d",&a);
  scanf("%d",&b);
	
  c2 =  a*a + b*b;
  printf("c = %.2f\n", sqrt(c2)); 

  return 0;
}

Вычислить синус угла ввёденного с клавиатуры. Угол вводится в градусах.

Листинг 2.

#include <stdio.h>
#include <math.h> // подключаем 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. перед передачей аргументов в функцию (как в нашем примере с корнем. Листинг 1.)
  2. выполнение арифметических операций с разными типами аргументов
  3. перед выполнением присваивания

Правила неявного преобразования типов

  • если выполняются арифметические операции с разными типами аргументов. Оба аргумента приводятся к большему типу.
    Порядок типов: int < float < double
  • при присваивании. Значение справа от оператора присваивания приводится к типу переменной слева от оператора присваивания. При этом, если больший тип присваивается меньшему, то может произойти потеря точности.

Примеры:

int+float будет автоматически преобразовано к float+float
float/int будет автоматически преобразовано к float/float
double*float будет преобразовано к double*double
int = double double будет преобразовано к int с потерей дробной части
float = int int будет преобразовано к float

Расскажи друзьям!
Или поддержи проект.

Практика

Решите предложенные задачи:

Для удобства работы сразу переходите в полноэкранный режим

Дополнительные материалы

  1. пока нет

Оставить комментарий

Чтобы код красиво отображался на странице заключайте его в теги [code] здесь писать код [/code]

Комментарии

Николай Евсюков
Несмотря на то, что написано
"Для использования математических функций нужно подключить заголовочный файл math.h"
в задачах на Степике функции pow(), fabs() (остальные не проверял) всё равно работают.

Это зависит от компилятора или стандартной библиотеки ?
KaDeaT
От настроек компилятора. Рекомендую всегда подключать необходимые заголовочные файлы.
YanzeimSALIA
Мы собрали лучшие онлайн займы на карту на сайте LITE-ZAIM.RU

К великому сожалению, проблемавопрос нехватки финансовых средств у народа нашей страны является главной на сегодняшний момент. В то время, когда цены на еду, оплату жилья, одежду и обувь, табак, медицинские препараты и всё остальное поднимаются, зарплаты нечасто когда повышают. Еще превосходно, что не урезают! Если Вы пребываете в трудной ситуации, то мы рады Вам прийти на помощь.

Представленный сайт lite-zaim.ru образован для тех, кому экстренно потребовалась конкретная сумма финансовых средств. Тут Вы сможете заказать мгновенный займ на карту. Мы даём информацию о самых популярных компаниях, которые предоставляют <a href=https://lite-zaim.ru/>онлайн займы на банковскую карту срочно без отказа</a> и подобные услуги. Чтобы ими воспользоваться, не нужно ничего непостижимого, пригодится всего лишь Ваш Российский паспорт, возраст от 18 лет, сотовый телефон и банковская карта. Карта нужна лишь для того, чтобы получить денежный перевод, если вам комфортно получить деньги иным методом, то и карты не понадобится.

Для того, чтобы получить срочный займ на карту, Вам предстоит сделать выбор в одну или нескольких микрокредитный компаний (МКК). Компании отличаются условиями выдачи микрокредита, например минимальная сумма, возраст заемщика, срок погашения, процентная ставка, время получения денег на карту и другие. Вы можете выбрать сразу 3-5 компаний, чтобы подать заявки. После выбора МФО жмите на «оформить заявку», где Вам будет показана анкета.

При оформлении анкеты нужно вводить свои персональные данные. Если Вы напишите ложную информацию, то Вас занесут в черный список МКК и Вы больше не сможете воспользоваться этой удобной услугой. Перед оформлением заявки рекомендуем перепроверить введенные данные. Чаще, результат должен прийти в течение 15 минут. Вы сможете выбрать способ получения денежных средств и также, способ возврата. Если д