【从零开始的 C 语言笔记】第十二篇-Math 函式库介绍与应用

不怎麽重要的前言

上一篇我们介绍了什麽是指标,不晓得大家有没有比较了解地址的概念?

接下来我们来介绍Math函式库吧!


函式库?

还记得在遥远的第三篇我们有介绍在写主函式(main function)前,必须先做好一件事就是引入函式库。

一般来说在程序的开头,我们就会先把会用到的函式库(工具包)引入,我们那时候形容函式库像是汇集了很多函式(工具)的工具包,而我们每次写程序都会引入的「#include <stdio.h>」就是很好的例子,因为「stdio.h」函式库包含了我们很常使用到的printf和scanf,往後也会提到别的函式。

至於「stdio.h」函式库具体包含了什麽样的函式,我们可以参考下面这个连结:
<stdio.h> - C语言标准库(gitbook)

既然大概有了函式库的概念,我们接下来要提一下也很好用的函式库--「<math.h>」。


Math函式库

<math.h>是一个包含了许多数学常用计算的函式库,这个函式库的函式基本是以double的资料型态运算与返值,诸如常见的次方计算、log运算、平方根、绝对值、三角函数、自然对数运算,这些都可以在<math.h>中找到对应函式来协助处理,其中也有数学中常应用的常数也被定义。

接下来我们来介绍<math.h>包含的内容:

  1. 常数
    (1) 介绍
定义的变数名称 代表运算式 数值
M_E e 2.71828182845904523536
M_LOG2E log2(e) 1.44269504088896340736
M_LOG10E log10(e) 0.434294481903251827651
M_LN2 ln(2) 0.693147180559945309417
M_LN10 ln(10) 2.30258509299404568402
M_PI pi 3.14159265358979323846
M_PI_2 pi/2 1.57079632679489661923
M_PI_4 pi/4 0.785398163397448309616
M_1_PI 1/pi 0.318309886183790671538
M_2_PI 2/pi 0.636619772367581343076
M_2_SQRTPI 2/sqrt(pi) 1.12837916709551257390
M_SQRT2 sqrt(2) 1.41421356237309504880
M_SQRT1_2 1/sqrt(2) 0.707106781186547524401

(2) 实际应用
a. 直接使用

#include <stdio.h>
#include <math.h>

int main(){
    printf("M_PI: %f\n", M_PI);
    printf("M_E: %f\n", M_E);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211028/20142565EtQaLQk564.png

b. 用变数储存使用

#include <stdio.h>
#include <math.h>

#define pi M_PI

int main(){
    double e = M_E;

    printf("pi: %f\n", pi);
    printf("e: %f\n", e);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211028/20142565ZHO9q2tYLR.png

  1. 函式
    (1) 介绍
函式 用法
double pow(double x, double y) 回传x的y次方值。
double exp(double x) 传回e的x次方值。
double sqrt(double x) 回传x的平方根值。
double fabs(double x) 回传x的绝对值。
double ceil(double x) 回传大於或等於x的最小整数值。
double floor(double x) 回传小於或等於x的最大整数值。
double fmod(double x, double y) 回传x除以y的余数值。
double log(double x) 回传x的自然对数值(基数为e)。
double log10(double x) 返回 x 的常用对数值(基数为10)。
double sin(double x) 返回弧度角x的sin值。
double cos(double x) 返回弧度角x的cos值。
double tan(double x) 返回弧度角x的tan值。
double asin(double x) 返回x弧度的sin^(-1)值。
double acos(double x) 返回x弧度的cos^(-1)值。
double atan(double x) 返回x弧度的tan^(-1)值。

(2) 实际应用

#include <stdio.h>
#include <math.h>

#define pi M_PI

int main(){
    printf("pow: %f\n", pow(2,10));
    printf("exp: %f\n", exp(1));
    printf("sqrt: %f\n", sqrt(100));
    printf("fabs: %f\n", fabs(-1.2345));
    printf("ceil: %f\n", ceil(1.2345));
    printf("fmod: %f\n", fmod(4.92345,1.2));
    printf("log: %f\n", log(1));
    printf("log10: %f\n", log10(100));
    printf("sin: %f\n", sin(pi/2));
    printf("cos: %f\n", cos(0));

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211028/20142565Oy6tUUcdBW.png


今天的内容简单的介绍了一下math函式库,大概多多少少写程序都可能会用到,虽然出场机率没那麽高,不过需要使用的时候,这个函式库可是很方便的。

下一篇我们来介绍Array是什麽吧?


<<:  JS 43 - 将表格式表单的资料列输出为 JSON 格式

>>:  【从零开始的 C 语言笔记】第十三篇-Array介绍与应用(1)

Youtube Analytics API 教学 - OAuth2.0 开放授权 (3)

「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...

Flutter API Get using Bloc state management and http plugin

Flutter API Get using Bloc state management and ht...

Flutter体验 Day 10-表单组件

表单组件 使用表单处理使用者输入是常见的应用的基础功能,使用这些表单组件可以应用在注册、登入、电商…...

DAY 24 Full Screen Modal

接着我们要做的是打开 menu hamberger 後的 full screen modal,里面包...

# Day25--还不Merge一下?

每当我们在使用git的时候,我们查看每一条之前自己加入的纪录: git log --oneline ...