C语言实例_math.h库函数功能及其用法详解

一、前言

数学在计算机编程中扮演着至关重要的角色,C语言的math.h头文件提供了一系列的函数和工具,用于数学计算和常用数学函数的实现。这些函数包括数值运算、三角函数、指数对数函数等,为开发人员提供了强大的数学处理能力。本文将对math.h头文件中的所有函数进行全面介绍,包括功能和使用方法,以帮助大家更好地理解和利用该头文件。

在 C 语言中,math.h 头文件提供了许多与数学运算相关的函数和宏。以下是该头文件中常用的函数和宏及其功能的详细介绍:

二、函数功能介绍

【1】基本数学运算函数

  • double sin(double x) :计算正弦函数的值。
  • double cos(double x) :计算余弦函数的值。
  • double tan(double x) :计算正切函数的值。
  • double asin(double x) :计算反正弦函数的值。
  • double acos(double x) :计算反余弦函数的值。
  • double atan(double x) :计算反正切函数的值。
  • double atan2(double y, double x) :计算给定直角坐标系中点(x,y)的反正切函数值。
  • double sinh(double x) :计算双曲正弦函数的值。
  • double cosh(double x) :计算双曲余弦函数的值。
  • double tanh(double x) :计算双曲正切函数的值。
  • double exp(double x) :计算指数函数的值。
  • double log(double x) :计算自然对数函数的值。
  • double log10(double x) :计算以 10 为底的对数函数的值。
  • double pow(double x, double y) :计算 x 的 y 次幂。
  • double sqrt(double x) :计算平方根函数的值。
  • double ceil(double x) :向上取整,返回不小于 x 的最小整数值。
  • double floor(double x) :向下取整,返回不大于 x 的最大整数值。
  • double fabs(double x) :计算绝对值函数的值。

【2】其他常用函数

  • double fmod(double x, double y) :计算 x 除以 y 的余数。
  • double round(double x) :四舍五入,返回最接近 x 的整数。
  • double trunc(double x) :截断,返回 x 的整数部分。
  • *double modf(double x, double intpart)** :将 x 拆分为整数部分和小数部分,并将整数部分存储在 intpart 中。
  • double hypot(double x, double y) :计算两个参数的平方和的平方根。
  • double ldexp(double x, int exp) :计算 x 乘以 2 的指定次幂。
  • *double frexp(double value, int exp)** :将 value 分解为尾数和指数,并将指数存储在 exp 中。
  • int isnan(double x) :检查 x 是否是非数值(NaN)。
  • int isinf(double x) :检查 x 是否是无穷大。
  • int isfinite(double x) :检查 x 是否是有限数。
  • double copysign(double x, double y) :返回与 x 绝对值相同但符号与 y 相同的值。
  • double erf(double x) :计算误差函数的值。
  • double erfc(double x) :计算余误差函数的值。

【3】宏、常量和特殊值

除了上述函数,math.h 头文件还定义了一些宏、常量和特殊值,例如:

  • M_PIM_E 等代表数学常量。
  • 常量INFINITYNAN 等表示特殊数值的常量。
  • 特殊值HUGE_VALHUGE_VALFHUGE_VALL 等特殊数值。

这些函数和宏可以在 C 语言中进行各种数学运算和数值处理。

三、用法示例

【1】基本数学运算函数:

cpp 复制代码
#include <stdio.h>
#include <math.h>
​
int main() {
    double x = 1.5;
    double y = 2.0;
​
    double result1 = sin(x);
    printf("sin(%.2f) = %.2f\n", x, result1);
​
    double result2 = pow(x, y);
    printf("%.2f^%.2f = %.2f\n", x, y, result2);
​
    int result3 = ceil(x);
    printf("ceil(%.2f) = %d\n", x, result3);
​
    return 0;
}

输出结果:

cpp 复制代码
sin(1.50) = 0.99
1.50^2.00 = 2.25
ceil(1.50) = 2

【2】其他常用函数:

cpp 复制代码
#include <stdio.h>
#include <math.h>
​
int main() {
    double x = 3.7;
    double intpart;
    double fractpart;
​
    fractpart = modf(x, &intpart);
    printf("x = %.2f, integer part = %.2f, fractional part = %.2f\n", x, intpart, fractpart);
​
    double distance = hypot(3.0, 4.0);
    printf("Distance from origin to point (3, 4) is %.2f\n", distance);
​
    double value = 1234.56;
    int exp;
    double mantissa = frexp(value, &exp);
    printf("Value = %.2f, mantissa = %.2f, exponent = %d\n", value, mantissa, exp);
​
    return 0;
}

输出结果:

cpp 复制代码
x = 3.70, integer part = 3.00, fractional part = 0.70
Distance from origin to point (3, 4) is 5.00
Value = 1234.56, mantissa = 0.97, exponent = 11
相关推荐
咚为12 分钟前
Rust Print 终极指南:从底层原理到全场景实战
开发语言·后端·rust
二哈喇子!34 分钟前
基于Spring Boot框架的车库停车管理系统的设计与实现
java·spring boot·后端·计算机毕业设计
Loo国昌4 小时前
【LangChain1.0】第九阶段:文档处理工程 (LlamaIndex)
人工智能·后端·python·算法·langchain
毕设源码-朱学姐4 小时前
【开题答辩全过程】以 基于SpringBoot的律师事务所管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
愈努力俞幸运4 小时前
flask 入门 token, headers,cookie
后端·python·flask
毕设源码-朱学姐4 小时前
【开题答辩全过程】以 基于springboot的日用药品仓库管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
lkbhua莱克瓦246 小时前
深入理解HTTP协议:从理论到SpringBoot实践
网络·笔记·后端·网络协议·http·javaweb
古城小栈6 小时前
Rust复合类型 四大军阀:数、元、切、串
开发语言·后端·rust
+VX:Fegn08958 小时前
计算机毕业设计|基于springboot + vue酒店预订系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
JavaGuide8 小时前
IntelliJ IDEA 2026.1 EAP 发布!拥抱 Java 26,Spring Boot 4 深度支持!
java·后端·mysql·springboot·idea·大厂面试·javaguide