cmath头文件与一些常用的函数(第十二节)

本文详细介绍了C语言中math库的常见数学函数,包括取整、取余、四舍五入、绝对值、最大最小值、三角函数及其反函数、对数和指数函数、根号函数、双曲函数等。同时,还介绍了如何使用其他库函数进行数组初始化、填充、交换元素以及使用分解函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)C语言math中提供的常见函数:

#include <iostream>
#include <cmath>

using namespace std;
//以下参数和返回值类型以double类型为准;
int main()
{        
	//cmath提供
	//向上取整ceil(parameter x);所谓上下可以理解成数轴右边为上左边为下
	cout << ceil(9.3) << endl;
	
	//向下取整floor(parameter x);
	cout << floor(9.9) << endl;
	
	//取余数fmod(parameter x, parameter y);得到x/y的余数,可与x%y等效
	cout << fmod(32.6, 2.7) << endl;
	
	//四舍五入round(parameter x);
	cout << round(6.8) << endl;
	cout << round(6.4) << endl;
	
	//取绝对值  abs(parameter x);取int类型绝对值   fabs();取double类型绝对值   fabsf();取float绝对值
	cout << abs(-5) << endl;
	cout << fabs(32.697843549) << endl;
	cout << fabsf(32.6782) << endl;
	
	//最值
	//fmax(parameter x, parameter y);返回大值
	cout << fmax(8.0, 3.7) << endl;
	
	//fmin(parameter x, parameter y);返回小值
	cout << fmin(8.0, 3.7) << endl;
	
	//常见数学函数
	//余弦cos(parameter x);注意里面传入的是弧度值不是角度值180°等于Πrad
	cout << cos(M_PI * 30.0 / 180.0) << endl;//将30°转成弧度,M_PI是cmath头文件给的Π值
	
	//正弦sin(parameter x);
	cout << sin(M_PI * 45.0 / 180.0) << endl;
	
	//正切tan(parameter x);
	cout << tan(M_PI * 60.0 / 180.0) << endl;
	
	//对应三个反三角函数
	//反余弦acos(parameter x);
	cout << acos(0.5) * 180.0 / M_PI << endl;
	
	//反正弦asin(parameter x);
	cout << asin(0.5) * 180.0 / M_PI << endl;
	
	//反正切atan(parameter x);
	cout << atan(1.0) * 180.0 / M_PI << endl;
	
	//atan2(parameter x, parameter y);返回正切值为两个数的商的角度,x点的x坐标,y点的y坐标
	//其中(x, y)为笛卡尔平面中的点
	cout << atan2(1.0, 2.0) * 180.0 / M_PI << endl;
	
	//算术平方根sqrt(parameter x);
	cout << sqrt(4.0) << endl;
	
	//立方根cbrt(parameter x);
	cout << cbrt(8.0) << endl;
	
	//幂函数pow(parameter x, parameter y);求x^y
	cout << pow(7.0, 8.0) << endl;
	
	//指数函数
	//exp(parameter x);以e为底数指数函数
	cout << exp(8.0) << endl;
	
	//exp2(parameter x);以2为底数指数函数
	cout << exp2(8.0) << endl;
	
	//对数函数
	//log10(parameter x);以10为底数的对数函数
	cout << log10(100.0) << endl;
	
	//log(parameter x);以e为底数的对数函数
	cout << log(6.0) << endl;
	
	//log2(parameter x);以2为底数对数函数
	cout << log2(8.0) << endl;
	
	//分解函数
	//modf(parameter x, parameter* integer);返回值x的小数部分,并将interger设置为整数部分
	double x = 3.141593, fractpart, intpart;
	fractpart = modf(x, &intpart);
	cout << intpart << ' ' << fractpart << endl;
	
	//frexp(parameter x, parameter* n);把一个浮点数分解为尾数和指数
	//说明:其中x = 尾数 * 2^指数
	double x = 18.5, y;
	int n;
	y = frexp(x, &n);
	cout << y << ' ' << n << endl;//x = y * 2^n;
	
	//求直角三角形斜边(勾股定理)
	//hypot(parameter x, parameter y);
	cout << hypot(3, 4) << endl;
	
	//双曲函数
	//双曲余弦cosh(parameter x);
	cout << cosh(0.5) << endl;
	
	//双曲正弦sinh(parameter x);
	cout << sinh(0.5) << endl;
	
	//双曲正切cosh(parameter x);
	cout << tanh(0.5) << endl;
	
	return 0;
}

其外cmath中还有一些函数这里就不说了(例如:erf(parameter x); erfc(parameter x);tgamma(parameter x);等等这里就不说了,需要了解自行查看语言文档。

 

2)其他一些常用函数

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int a[1010], n, b[10][10];

int main()
{
	//cstring里
	memset(a, -1, sizeof(a));//初始化a数组将数组所有元素值初始化为-1
	//memset函数原则上只能是初始化成0或者-1
	//第一个参数为开始位置,第二个参数为值,第三个参数整个数组内存空间
	cin >> n;//这里只输出n个,不然太多了
	for(int i = 0; i < n; ++i) cout << a[i] << ' ';
	cout << endl;
	//algorithm
	//如果要初始化成别的值可使用algorithm里面fill填充函数
	fill(a, a + n, 10);//初始位置,向后几个,填充值 
	for(int i = 0; i < n; ++i) cout << a[i] << ' ';
	cout << endl;
    a[0] = 8; a[n - 1] = 7;
	//交换两个元素
	swap(a[0], a[n - 1]);//这里将a[0]与a[n - 1]交换
	for(int i = 0; i < n; ++i) cout << a[i] << ' ';
	cout << endl;
    //初始化二维数组
    fill(b[0], b[0] + 10 * 10, 3);//注意二维数组首地址为b[0]
    for(int i = 0; i < 10; ++i)
    {
        for(int j = 0; j < 10; ++j)
            cout << b[i][j] << ' ';
        cout << endl;
    }
	return 0;
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值