2.8、一些数学函数

By | 2015年3月15日

这一篇本来准备放在后面再写的,想了半天还是决定先写了

这篇文章中我们将介绍一系列的数学函数,算是为后面我们写程序做一些准备

在这篇文章中,我仅给出代码,不做演示,所有请大家自己对代码进行实验(很重要)


 

c语言的标准库中已经帮我们实现了许多数学函数

在使用函数之前,我们需要对这些函数进行“声明”,否则编译器是不认识这些函数的。

库函数的声明不需要我们自己进行,它们都已经写入“头文件”了,用之前只需要将它“包含”进来

就像使用printf需要include <stdio.h>一样,使用数学函数就需要include <math.h>

math是数学,这个不多解释。

因此,只要使用到了任何标准库提供的数学函数,我们就必须(除非你手工进行声明)在程序开头加上

#include <math.h>

下面的代码可以作为一个模板,下面的所有例子都可以通过将注释修改为相关代码而执行

#include <stdio.h>
#include <math.h>

int main()
{
    int int_a = -2;
    double double_a = -2.0;

    //add your code here 在此处添加代码
    return 0;
}

 

abs()

我们先从绝对值函数开始,若想求一个数的绝对值,只需要abs就行了,如

int_a = abs(int_a);
printf("%d\n", int_a);

值得注意的是,abs函数只支持int型的数据,如果要求一个double值的绝对值呢?

那就需要“升级版”:fabs()

用法完全相同,但是参数却是double型的(如果你给的是float类型的,系统会自动帮你转换)

double_a = fabs(double_a);
printf("%f\n", double_a);

sqrt()

有时候我们需要计算平方根,这样这个函数就派上用场了

sqrt()将接受一个double类型的参数,让后它将返回给你平方根

    double_a = fabs(double_a);
    double_a = sqrt(double_a);
    printf("%f\n", double_a);

但是我们一般喜欢这样写

    double_a = sqrt(fabs(double_a));
    printf("%f\n", double_a);

甚至是

    printf("%f\n", sqrt(fabs(double_a)));

pow()

在计算一个数的幂时,就需要用到pow()

这个函数有两个参数pow(double x, double y);,参数x和y都是double类型的

函数返回的值是x的y次幂

    printf("%g\n", pow(2, 10));

上面的程序运行将显示1024,这是2的10次方的值

切记,这个函数返回的值是double类型,因此输出需要使用%f或者%g!(当然,也需要一个double类型变量去接收它)

如果你觉得pow函数仅仅如此那就大错特错了,既然它的参数都是double类型,说明这个函数肯定能计算非整数幂!我们来试一下

    printf("%g\n", pow(2, 1.5));

这样一来,pow函数就很有用了。上面的sqrt函数只能计算平方根,立方根怎么办?

求它的三分之一次幂不就好了

    printf("%g\n", pow(8, 0.3333333333));

8的立方根是2,这应该是此程序的结果

log(), log10()

这两个一看就知道是求对数的了

log10()是求以10为底的对数,log()则是以e为底

用法和前面的sqrt()类似,请自己写出代码

如果你要问如果我要算别的底的对数怎么办?

还能怎么办,换底公式呗!

三角函数

一般来说,这些函数用的不像上面的那么多

sin(), cos(), tan()

以及反三角函数asin(),acos(),atan()

用法和sqrt类似,同样不给出代码!

标准库的数学函数还有几个,再往下写我估计你就想右上角单击了……

所以后面用得上的地方再说吧

发表评论

电子邮件地址不会被公开。 必填项已用*标注