系统函数
是将函数封装入库,供用户使用的一种方式。方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。
像 cin 跟 cout 属于我们一直使用的系统函数
cmath 中常用函数
- pow
- log10
- sqrt
- abs
- labs
- fabs
- ceil
- floor
pow
pow(a,b)
指数运算,得到 a 的 b 次方,ab。
pow 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
cout << "2的3次方:" << pow(2,3) << endl;
return 0;
}
运行结果:
c
2的3次方:8
log10
log10(x)
计算以 10 为底的双精度实数 x 的对数。
log10 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x = 100;
cout << "log10(x) = " << log10(x) << endl;
return 0;
}
运行结果:
c
log10(x) = 2
分析
因为 10 的 2 次方是 100,所以这里的答案是 2。
sqrt
sqrt(a)
开根运算,得到 a 开 2 次根的值。也可以用pow(a,0.5)
的方式来实现开根运算。
sqrt 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
cout << "9开根的值:" << sqrt(9) << endl;
return 0;
}
运行结果:
c
9开根的值:3
abs
abs(number)
计算整数 number 的绝对值
abs 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
int number = -100;
cout << "number的绝对值是:" << abs(number) << endl;
return 0;
}
运行结果:
c
number的绝对值是:100
labs
labs(number)
计算长整数 number 的绝对值
labs 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
long number = -15;
cout << "number的绝对值是:" << labs(number) << endl;
return 0;
}
运行结果:
c
number的绝对值是:15
fabs
fabs(number)
计算双精度实数 number 的绝对值
fabs 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
double number = -15.674;
cout << "number的绝对值是:" << fabs(number) << endl;
return 0;
}
运行结果:
c
number的绝对值是:15.674
ceil
ceil(x)
计算不小于双精度实数 x 的最小整数
ceil 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x = 3.6;
cout << "ceil(x) = " << ceil(x) << endl;
return 0;
}
运行结果:
c
ceil(x) = 4
分析
可以理解为给数字 x 进行向上取整。
floor
floor(x)
计算不大于双精度实数 x 的最小整数
floor 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x = 3.6;
cout << "floor(x) = " << floor(x) << endl;
return 0;
}
运行结果:
c
floor(x) = 3
分析
可以理解为给数字 x 进行向下取整。
其它常用函数
- sizeof
- memset
- malloc
- free
sizeof
sizeof(x)
得到变量 x 的内存大小。
sizeof 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a = 1;
double b = 1.2;
char c = 'a';
string d = "abc";
cout << sizeof(a) << endl;
cout << sizeof(b) << endl;
cout << sizeof(c) << endl;
cout << sizeof(d) << endl;
return 0;
}
分析
不同的变量占据的内存大小不一样。
memset
void *memset(void *s, int ch, size_t n)
memset(a,1,sizeof(int)*5)
批量设置从 a 开始,连续 5 个内存空间的值为 1。要注意的是,memset 是对字节进行操作,一般用来初始化字符型数组。
memset 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
char word[] = "apple";
memset(word,'a',5);
for(char i: word)
cout<<i<<endl;
return 0;
}
分析
a 的值被重置为 5 个'a'。