1. 程式人生 > >C語言入門(6)——C語言常用數學函式

C語言入門(6)——C語言常用數學函式

在編碼過程中會經遇到數學運算,幸運的是C語言提供了非常豐富的數學函式庫。

在數學中使用函式有時候書寫可以省略括號,而C語言要求一定要加上括號,例如sin(pi/2)這種形式。在C語言的術語中,pi/2是引數,sin是函式,sin(pi/2)是函式呼叫。

函式呼叫也是一種表示式。這個表示式由函式呼叫運算子(也就是括號)和兩個運算元組成,運算元sin稱為Function Designator,是函式型別的,運算元pi/2是double型的。這個表示式的值就是sin(pi/2)的計算結果,在C語言的術語中稱為函式的返回值。

下面演示一些常用的函式用法。在使用數學函式需要時要引入標頭檔案math.h。

1、函式名:abs

   功能:返回整型數的絕對值.

   用法:Abs(number)

number 引數可以是任意有效的數值表示式。如果 number 包含 Null,則返回 Null;如果是未初始化變數,則返回 0.

程式碼舉例:

#include <stdio.h>
#include <math.h>
int main()
{
    intnumber = -1234;
    printf("數字: %d 的絕對值是: %d \n", number, abs(number));
    system("pause");
    return0;
}


執行結果:

 

2、函式名:fabs

   功能:求浮點數x的絕對值.

   用法:fabs(double x);

程式碼舉例:

#include <stdio.h>
#include <math.h>
int main()
{
    floatnumber = -1234.0;
    printf("數字: %f 的絕對值是: %f \n", number, fabs(number));
    system("pause");
    return0;
}

 

執行結果:

3、函式名:sqrt

    功能:返回指定數字的平方根.

    用法:sqrt  (double x);

說明:sqrt即平方根計算(Square Root Calculations),通過這種運算可以考驗CPU的浮點能力。

程式碼舉例:

#include <math.h>
#include <stdio.h>
int main(void)
{
    doublex = 4.0, result;
    result =sqrt(x);
    printf("%f 的平方根是 %f\n", x, result);
    system("pause");
    return0;
}

執行結果:

4、函式名:pow

    功能:返回指定數字的指定次冪.

用法:pow   (double x, double y);(將返回x的y次冪)

返回值:x不能為負數且y為小數,或者x為0且y小於等於0,返回冪指數的結果。

返回型別:double型,int,float會給與警告!

程式碼舉例: 

#include<math.h>
#include<stdio.h>
 
int main(void)
{
    doublex = 2.0, y = 3.0;
    printf("%lf 的 %lf 次方是 %lf\n", x, y, pow(x, y));
    system("pause");
    return0;
}

執行結果:

5、函式名: frexp

功  能:把一個雙精度數分解為尾數的指數

用  法:double frexp(doublevalue, int *eptr);

引數:

x : 要分解的浮點資料

expptr : 儲存指數的指標

返回值:返回尾數

說 明:其中 x = 尾數 * 2^指數

 程式碼舉例:

#include <math.h>
#include <stdio.h>
int main(void)
{
    doublemantissa, number;
    intexponent;
    number =8.0;
    mantissa =frexp(number, &exponent);
    printf("數字 %lf 是 %lf 乘以2的 %d 次方\n", number, mantissa, exponent);
    system("pause");
    return0;
}

執行結果:

驗證:8 = 0.5* 2^4 = 0.5 * 16

6、函式名:ceil / floor

功能: 向上舍入/向下舍入

用法:double ceil(doublex);

    double floor(double x);

程式碼舉例:

#include<math.h>
#include<stdio.h>
int main(void)
{
    doublenumber = 123.54;
    doubledown, up;
    down =floor(number);
    up =ceil(number);
    printf("數字:%5.2lf\n", number);
    printf("向下舍入的結果:%5.2lf\n", down);
    printf("向上舍入的結果:%5.2lf\n", up);
 
    system("pause");
    return0;
}


執行結果:

7、函式名: atof  (const char *s);

  功  能: 把字串轉換成浮點數

  用  法: double atof(constchar *nptr);

程式碼舉例:

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
	float arg, *point = &arg;
	float f;
	char *str = "12345.67";
	f = atof(str);
	printf("string = %s float = %f\n", str, f);

	system("pause");
	return 0;
}

執行結果:

C語言關於數學運算的函式還有很多,例如三角函式、對數函式等,用法比較簡單,就不一一舉例了。