iT邦幫忙

1

【從零開始的 C 語言筆記】第十二篇-Math 函式庫介紹與應用

  • 分享至 

  • xImage
  •  

不怎麼重要的前言

上一篇我們介紹了什麼是指標,不曉得大家有沒有比較了解地址的概念?

接下來我們來介紹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是什麼吧?


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言