math.h 功能索引

本文详细介绍了常用的数学函数,包括三角函数、反三角函数、双曲三角函数等,以及指数与对数、取整、绝对值等操作。特别指出,这些函数的操作对象通常是以弧度表示而非角度。
1、 三角函数
double sin(double);正弦
double cos(double);余弦
double tan(double);正切
2 、反三角函数
double asin (double); 结果介于[-PI/2,PI/2]
double acos (double); 结果介于[0,PI]
double atan (double); 反正切(主值),结果介于[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圆值),结果介于[-PI,PI]
3 、双曲三角函数
double sinh (double);
double cosh (double);
double tanh (double);
4 、指数与对数
double frexp(double value,int *exp);这是一个将value值拆分成小数部分f和(以2为底的)指数部分exp,并返回小数部分f,即f*2^exp。其中f取值在0.5~1.0范围或者0。
double ldexp(double x,int exp);这个函数刚好跟上面那个frexp函数功能相反,它的返回值是x*2^exp
double modf(double value,double *iptr);拆分value值,返回它的小数部分,iptr指向整数部分。
double log (double); 以e为底的对数
double log10 (double);以10为底的对数
double pow(double x,double y);计算以x为底数的y次幂
float powf(float x,float y); 功能与pow一致,只是输入与输出皆为浮点数
double exp (double);求取自然数e的幂
double sqrt (double);开平方
5 、取整
double ceil (double); 取上整,返回不比x小的最小整数
double floor (double); 取下整,返回不比x大的最大整数,即高斯函数
6 、绝对值
int abs(int i); 求整型的绝对值
double fabs (double);求实型的绝对值
double cabs(struct complex znum);求复数的绝对值
7 、标准化浮点数
double frexp (double f,int *p); 标准化浮点数,f = x * 2^p,已知f求x,p (x介于[0.5,1])
double ldexp (double x,int p); 与frexp相反,已知x,p求f
8 、取整与取余
double modf (double,double*); 将参数的整数部分通过指针回传,返回小数部分
double fmod (double,double); 返回两参数相除的余数
9 、其他
double hypot(double x,double y);已知直角三角形两个直角边长度,求斜边长度
double ldexp(double x,int exponent);计算x*(2的exponent次幂)
double poly(double x,int degree,double coeffs []);计算多项式
int matherr(struct exception *e);数学错误计算处理程序

注意:

  1. 没有现成的cot三角函数,可以使用tan(PI/2-x)来实现
  2. double atan2(double y,double x);取值范围在(PI,PI)之间;这是一个不太常见的函数,主要用来返回y/x的反正切值。
  3. 强调一点,1-3类 传参都是针对以弧度表示的数值,非角度表示的数值。
  4. 对于一般的对数求解,考虑利用数学上的对数转换来实现。
  5. 两个函数比较容易混淆,介绍一种方法,ceil与floor首字母分别是c与f,取值在c与f之间,所以对于ceil函数取最小整数,对于floor函数取最大整数。
  6. 关于fmod:考虑到%只适用与整型数据,这里提出一个专门针对实型数据的取余运算的函数。
  7. int rand(void) 用这函数的时候记得要给随机种子哦,要不得出的不是真正的随机数.产生随机种子可以用srand((unsigned int)time(NULL));这就是由时间产生的随机种子了。
来自百度百科
### 实现思路 为了实现从哈希表中移除所有非单词字符的功能,可以采用如下方法: - 首先定义一个用于判断字符是否为字母的辅助函数 `is_letter`。 - 创建并初始化哈希表结构体及其相应的方法来管理键值对。 - 编写遍历哈希表并将不符合条件(即不是字母)的项删除的具体逻辑。 下面给出完整的代码示例[^1]: ```c #include <stdio.h> #include <string.h> #include <ctype.h> /* For isalpha function */ #include <stdlib.h> // 假设已经有一个有效的哈希表实现 HashTable typedef struct { char key; } HashTable; /* 判断单个字符是否为英文字母 */ int is_letter(char ch){ return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); } void remove_non_letters(HashTable **hash_table_ptr) { // 这里假设 hash_table 是一个动态数组形式存储的简单哈希表, // 并且有获取大小和访问元素的方法 get_size 和 at_index. size_t i, table_size = (*hash_table_ptr)->get_size(*hash_table_ptr); for(i=0 ;i<table_size;i++){ if(!is_letter((*hash_table_ptr)->at_index(*hash_table_ptr,i).key)){ (*hash_table_ptr)->remove_at_index(*hash_table_ptr,i--); --table_size; // 删除之后重新检查当前索引位置的数据 } } } ``` 请注意上述代码片段仅作为概念验证用途,在实际应用中可能还需要考虑更多边界情况处理以及更复杂的哈希冲突解决机制等问题。此外,这里简化了哈希表的操作接口以便于理解主要流程。 ### 注意事项 当涉及到具体数据结构的选择时,应该依据项目需求选用合适类型的容器类库或自行设计高效的自定义解决方案。对于本案例而言,如果目标平台支持,则可以直接利用现有的第三方开源哈希表库以减少工作量并提高稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值