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

一、前言

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

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

image-20230816115046273

二、函数功能介绍

【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】基本数学运算函数:

#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;
}

输出结果:

sin(1.50) = 0.99
1.50^2.00 = 2.25
ceil(1.50) = 2

【2】其他常用函数:

#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;
}

输出结果:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/318436.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++-类和对象(2)

1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下 6 个默认成员 函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译…

layui 日期不能重新渲染

需求&#xff1a;当用户选择开始日期的时候&#xff0c;结束日期要小于开始日期。 遇到的问题&#xff1a; 当切换开始时间时&#xff0c;结束时间的输入框不会被重新渲染。 解决&#xff1a; html代码&#xff1a; <div class"layui-form-item"><label…

引导和服务

一、Linux操作系统引导过程 1、引导过程总览图 2、引导过程的详细步骤 1.开机自检&#xff08;BIOS&#xff09; 服务器主机开机以后&#xff0c;将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测&#xff0c;检测成功后根据预设的启动顺序移交系统控制权&a…

VitulBox中Ubuntu虚拟机安装JAVA环境——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项

前言 在进行之后操作是请下载好JDK&#xff0c;之后的内容是以Ubuntu虚拟机中安装java环境续写。 建议大家先把文章看完在配&#xff0c;因为有一些出错原有在后面&#xff0c;看完之后调整顺序。 提示&#xff1a;以下操作是在虚拟机hadoop用户下操作的&#xff0c;并为安装…

C++ 实现Windows WIFI管理器

文章目录 前言一、代码二、补充知识三、遇到的问题字符集转换 四、剩余问题总结 前言 出于项目需要&#xff0c;需要用C开发一个wifi界面&#xff0c;实现wifi扫描、wifi连接与断开、wifi密码记住的基础功能。 一、代码 话不多说&#xff0c;直接上代码。 #pragma once #inc…

基于猫群算法优化的Elman神经网络数据预测 - 附代码

基于猫群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于猫群算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于猫群优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

SQL 在已有表中修改列名的方法

文章目录 1. MySQL2. SQL Server3. Oracle / PostgreSQL Question&#xff1a; 假设有一张表 StudentInfo&#xff0c;表中有一个列名是 Student_Name &#xff0c;想要把这个列名改成 StudentName 应该如何操作&#xff1f; 建表语句如下&#xff1a; --建表 if object_id(S…

洗地机有没有必要买?家用洗地机推荐

随着生活水平的提高&#xff0c;人们对家居环境的卫生和清洁要求也相应提高&#xff0c;因此家用洗地机作为一种现代化的清洁工具逐渐受到了广泛关注和青睐。那么&#xff0c;洗地机到底有没有必要买? 洗地机对于一些家庭确实是非常有必要的&#xff0c;特别是对于工作繁忙、…

vivado 定义相对放置的宏

定义相对放置的宏 关于相对放置的宏 相对放置宏&#xff08;RPM&#xff09;是一组基本逻辑元件&#xff08;BEL&#xff09;的列表。 逻辑元件的示例包括&#xff1a; •FF •LUT •DSP •闸板 RPM主要用于将小组逻辑紧密地放在一起&#xff0c;以改进资源效率并实现更…

Docker中的核心概念

1.镜像 Image 一个镜像就代表一个软件。mysql镜像、redis镜像、mq镜像 2.容器 Container 一个镜像运行一次就会生成一个容器&#xff0c;容器就是一个运行的软件服务。 3.远程仓库 Repository 远程仓库用来存储所有软件的镜像&#xff0c;Docker Hub 4.本地仓库 用来存储…

Vue.js 3.4版本发布:解析速度提升2倍,双向绑定革新等新功能

引言 随着2024年的来临,Vue团队的领军人物Evan You宣布了Vue.js 3.4的发布。这个版本不仅仅是修复了一些bug,还带来了一些非常实用的新功能和性能提升。 解析速度提升2倍 这次更新中,Vue.js 3.4实现了解析速度的大幅提升。尤其是在构建模板和脚本的源代码映射时,单文件组…

HarmonyOS-ArkTS基本语法及声明式UI描述

初识ArkTS语言 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集。因此&#xff0c;在学习ArkTS语言之前&#xff0c;建议开发者具备TS语…