C语言中之数学函数
创新互联建站主营八步网站建设的网络公司,主营网站建设方案,手机APP定制开发,八步h5成都微信小程序搭建,八步网站营销推广欢迎八步等地区企业咨询
C语言提供了以下的数学函数,要使用这些函数时,在程序文件头必须加入:
#include
math.h
编译时,必须加上参数「-lm」(表示连结至数学函式库),例如「gcc
-lm
test.c」。
函数之自变量与传回之值型别见自变量或函数前之型别宣告。
函数已经在「math.h」或其它标头档宣告过了,因此在使用时不必再加型别宣告,例如「y=sin(x);」,不用写成「y=double
sin(double
x);」。
函数说明
double
sin(double
x)
x
的正弦函数值
double
cos(double
x)
x
的余弦函数值
double
tan(double
x)
x
的正切函数值
double
asin(double
x)
x
的反正弦函数值
sin-1x,x的值在
[-1,1]
之间,传回的值在
[-p/2,p/2]
之间
double
acos(double
x)
x
的反余弦函数值cos-1x,x的值在
[-1,1]
之间,传回的值在
[-p/2,p/2]
之间
double
atan(double
x)
x
的反正切函数值tan-1x,传回的值在
[-p/2,p/2]
之间
double
atan2(double
y,
double
x)
y/x
的反正切函数值tan-1(y/x),传回的值在
[-p,
p]
之间
double
sinh(double
x)
x
的双曲正弦函数值
double
cosh(double
x)
x
的双曲余弦函数值
double
tanh(double
x)
x
的双曲正切函数值
double
exp(double
x)
x
的指数函数
ex
double
log(double
x)
x
的自然对数
ln(x),x
double
log10(double
x)
x
底数为
10
的对数,log10x,x
double
pow(double
x,
double
y)
x
的
y
次方
xy
double
sqrt(double
x)
x
的根号值
√x
double
ceil(double
x)
不小于
x
的最小整数(但其型别为
double)
double
floor(double
x)
不大于
x
的最大整数(但其型别为
double)
int
abs(int
x)
整数
x
的绝对值
|x|
long
labs(long
x)
长整数
x
的绝对值
|x|
double
fabs(double
x)
实数
x
的绝对值
|x|
要用弧度计算的,另外,pintf语句中,应该是"%lf",不是"f%"
sin()是三角函数,参数使用的是弧度,不是度。
asin()才是反三角函数。
资料 :
NAME
asin, asinf, asinl - arc sine function
SYNOPSIS
#include math.h
double asin(double x);
float asinf(float x);
long double asinl(long double x);
Link with -lm.
DESCRIPTION
The asin() function calculates the arc sine of x; that is the value
whose sine is x. If x falls outside the range -1 to 1, asin() fails
and errno is set.
RETURN VALUE
The asin() function returns the arc sine in radians and the value is
mathematically defined to be between -PI/2 and PI/2 (inclusive).
asin函数返回的是弧度制的角度,你计算的是角度制的值
asin(x)*180.0/3.141592
首先,你输出的不是正弦图像,而是反正弦图像。
#includestdio.h
#includemath.h
int
main(){
double
y;
int
x,m,i;
printf("y=sin(x)
[0x2*pi]\n");
for(y=1;y=-1;y-=0.1){//表示y的取值范围是[-1,1]
if(y=0){
m=asin(y)*10;
//反正弦函数,确定空格的数量,最大值为15
for(x=1;xm;x++)printf("
");
//printf("*",m);
printf("*");//注意此时不换行,因为后面还有一个点
for(;x31-m;x++)printf("
");//输出第二个点,并换行
printf("*\n");}
else{//同理输出y小于0的点
m=-1*asin(y)*10;
for(i=0;i32;i++)printf("
");
for(x=1;xm;x++)printf("
");
//printf("*",m);
printf("*");
for(;x31-m;x++)printf("
");
printf("*\n",m);
}
}
getchar();
return
0;
}