扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
要不使用库函数,求幂指数,只能靠自己写该功能的函数。
成都创新互联是一家专注于做网站、成都网站建设与策划设计,铜山网站建设哪家好?成都创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:铜山等地区。铜山做网站价格咨询:13518219792
即按照数学规则,将a重复乘b次,即得到a的b次幂。
1 对于0次幂,直接返回1
2 对于正数,按照参数b进行乘方。
3 对于负数,先按照参数b的绝对值进行乘方,再求倒数。
代码如下:
double my_pow(doubel a, int b)
{
int s=0,i;
double r = 1;
if(b == 0) return 1;
if(b0)
{
b*=-1;
s = 1;
}
for(i = 0; i b; i ++)
r *= a;
if(s)r=1/s;
return r;
}
C语言中指针运算要用pow()函数,例如2的4次方要写成这样:
pow(2,4);
^在C语言中是一个位操作符,作用是按位异或。
注意:pow()函数要包含math.h文件
扩展资料:
c语言基本运算符
C语言中用于基本算术运算的运算符有:+,-,*,%,/。这些运算符的用法和你想像到的基本无异:
加法运算符 “+”使得它两侧的值被加到一起。
减法运算符“-”用它前面的数减去后面的数。
乘法由“*”表示。C语言并没有计算平方的函数,也没有指数运算符。但你可以利用乘法来计算平方。
符号“%”表示求余。求余运算的结果是两数相除后的余数。因此,参与运算的值必须为整数。
符号“/”表示除法。注意,浮点类型的除法运算得到一个浮点数结果,而整数除法运算得到一个整数结果。
比如5/2的结果是2。当你对整数和浮点数进行混合运算时,结果是浮点数,比如5/2.0的结果是2.5。
1、C语言有现场的常用数学函数,所在函数库为math.h、stdlib.h。
函数名及解释:
int abs(int i) 返回整型参数i的绝对值
double cabs(struct complex znum) 返回复数znum的绝对值
double fabs(double x) 返回双精度参数x的绝对值
long labs(long n) 返回长整型参数n的绝对值
double exp(double x) 返回指数函数ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中
double ldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回+√x的值
double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度
double atan(double x) 返回x的反正切tan-1(x)值,x为弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度
double cos(double x) 返回x的余弦cos(x)值,x为弧度
double sin(double x) 返回x的正弦sin(x)值,x为弧度
double tan(double x) 返回x的正切tan(x)值,x为弧度
double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度
double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度
double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度
double hypot(double x,double y) 返回直角三角形斜边的长度(z),x和y为直角边的长度,z2=x2+y2
2、复杂的数学函数可以用自定义函数的形式实现。
例如:
double ConerVelocity(int A, double x1, double y1, double x2, double y2, double t1, double t2)
{
double T,V;
T=acos(abs(x1 * x2 + y1 * y2)/ sqrt(x1 * x1 +y1 * y1)/sqrt(x2 * x2 +y2 * y2));
V= (A * (t2-t1))/(2*sin(T/2));
return V;
}
这个流程是这样的,给power传进去两个值power(x,y),然后调用下面你定义的power,其中for(i=1;i=n;++i)
p=p*base;这一句表示传进来的y是几,1就乘以几次x,就是x的y次方了。比如x=2,y=3,那么for(i=1;i=3;++i)就会使p=p*base执行三次,p=1,base=2,就是1*2()一次,1*2*2()两次,1*2*2*2()三次
因为你用的1/2采用的是整形计算,结果为0,所以pow(4,1/2)=pow(4,0)=1
如果你写成pow(4,1.0/2)应该就等于2.000了
这个是初学者都容易出错的,或者你可以改成(double)1/2就可以了
#include math.h
#include stdio.h
int main(void)
{
double ans;
double x=5;
ans=pow(x/101.325,0.19);/*计算(x/101.325)的0.19次方*/
printf("%lf",ans);
return 0;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流