本節主要講解之前沒有用過的一些標準函數庫。主要分為 整數函數、浮點型函數、日期和時間函數等。
這一章主要講解整數函數。
整數函數:
整數函數的返回值為整型值,分為三類:算術、隨機數和字符串轉換。
算術:
標準函數庫包含了4個整型算術函數—abs\labs\ div\ldiv
1. abs—求絕對值:
原型:int abs(int value);
函數說明:abs用來計算傳入參數的絕對值,然後將結果返回。
用法:
int answer;
answer = abs(-12);//answer 返回為-12的絕對值,結果為12
2. labs—求絕對值:
原型:long int labs(long int value);
返回值:labs跟abs一樣,用來計算絕對值,但是labs支持長度為long int類型,長度更長。
用法:
long result;
long x = -12345678L; //長度範圍超過了int的最大範圍
result= labs(x);
3.div—兩個整數相除:
原型:div_t div(int numerator,int denominator);
返回值:返回商和餘數
用法:
div_t q;
q = div(10,3);
printf("8 div 3 = %d, remainder = %d\n", q.quot,q.rem);
輸出:
8 div 3 = 3, remainder = 1
4.ldiv—兩個整數相除:
原型:ldiv_t ldiv(long int numer, long int denom);
返回值:返回商和餘數
用法:
ldiv_t lx;
lx = ldiv(100000L, 30000L);
printf("100000 div 30000 = %ld remainder %ld\n", lx.quot, lx.rem);
輸出:
100000 div 30000 = 3 remainder 10000
隨機數:
在我們常用的一些加密、模擬操作的時候,需要用到隨機數,這裡有兩個函數(rand\srand)合在一起使用能夠產生偽隨機數。
偽隨機數:通過計算產生隨機數,有可能重複,因此不是真正的隨機數。
1. rand—產生隨機數:
原型:int rand():
用法:
int number;
number = rand();
2.srand —提供隨機數種子:
原型:void srand(unsigned int seed);
這裡的seed是rand函數的種子,用來初始化rand()的初始值。
rand調用之前,需要用srand產生一個種子,如果沒有用主動調用srand,系統也會默認使用srand(1)。
通常情況下,srand後面跟時間函數來完成隨機種子生成,減少隨機數相同的可能性。
srand((unsigned)time(NULL));
int a = rand();
字符串轉換:
字符串轉換函數把字符串轉換成數值,常用的有atoi\atol.
1.atoi—字符串轉成整數:
原型:int atoi(const char *nptr);
返回值:參數nptr字符串,如果第一個非空格字符存在,是數字或者正負號則開始做類型轉換,之後檢測到非數字(包括結束符 \0) 字符時停止轉換,返回整型數。否則,返回零。
示例:
int n;
char *str = "12345.67";
n = atoi(str); //n的值為12345
2.atol—字符串轉成長整形:
原型:long atol(const char *nptr);
返回值:返回轉換後的長整型數。如果傳入的字符串為空,或者字符串包含的內容非阿拉伯數字序列,則函數返回默認值0。
示例:
long l;
char *str = "98765432";
l = atol(str); //l為98765432
閱讀更多 大貓玩程序 的文章