目录

  • 1 第一章  C语言概述
    • 1.1 第一节  C语言的产生和发展
    • 1.2 第二节  C语言的特点
    • 1.3 第三节  两个简单的C程序
    • 1.4 第四节  C程序的上机步骤
    • 1.5 第五节  Dev-C++介绍
    • 1.6 第六节  VC2010学习版介绍
    • 1.7 第七节  宏定义和文件包含
    • 1.8 本章小结
    • 1.9 本章单元测试
  • 2 第二章  基本数据类型与简单程序设计
    • 2.1 第一节  C语言的基本数据类型
    • 2.2 第二节  常量
    • 2.3 第三节  变量
    • 2.4 第四节  赋值语句
    • 2.5 第五节  数据输出
    • 2.6 第六节 数据输入
    • 2.7 第七节  运算符
    • 2.8 第八节  常用的数学函数
    • 2.9 第九节  顺序结构程序设计
    • 2.10 本章小结
    • 2.11 本章单元测试
  • 3 第三章  分支结构程序设计
    • 3.1 第一节  关系表达式和逻辑表达式
    • 3.2 第二节  if单分支语句
    • 3.3 第四节  if双分支语句
    • 3.4 第五节  if多分支语句
    • 3.5 第六节  case多分支语句
    • 3.6 第七节  分支结构程序设计实例
    • 3.7 本章小结
    • 3.8 本章单元测试
    • 3.9 书中本章习题答案
  • 4 第四章  循环结构程序设计
    • 4.1 第一节  为什么需要循环控制
    • 4.2 第一节  while循环
    • 4.3 第二节  do ... while循环
    • 4.4 第三节  for循环
    • 4.5 第四节  多重循环
    • 4.6 第五节  break语句和continue语句
    • 4.7 第六节  循环结构程序设计实例
    • 4.8 本章小结
    • 4.9 书中本章习题答案
  • 5 第五章 数组
    • 5.1 第一节  一维数组的定义和使用
    • 5.2 第二节  二维数组的定义和使用
    • 5.3 第三节  字符数组的定义和使用
    • 5.4 第四节  数组的应用举例
  • 6 第六章  函数
    • 6.1 第一节  函数的定义
    • 6.2 第二节  函数的调用
    • 6.3 第三节 数组作为函数参数
    • 6.4 第四节  变量的作用域
    • 6.5 第五节 变量的存储类别
    • 6.6 第六节 函数应用实例
  • 7 第七章 结构体和共用体
    • 7.1 第一节  概述
    • 7.2 第二节  定义结构体变量的方法
    • 7.3 第三节 结构体变量的引用
    • 7.4 第四节 结构体数组
    • 7.5 第五节 共用体
    • 7.6 第六节  结构体和共用体应用实例
  • 8 第八章 指针
    • 8.1 第一节  指针的概念
    • 8.2 第二节  指向简单变量的指针
    • 8.3 第三节 指向数组的指针变量
    • 8.4 第四节  指向字符串的指针变量
    • 8.5 第五节 指针作为函数参数
    • 8.6 第六节  指向结构体的指针变量
    • 8.7 第七节 指针应用实例
  • 9 第九章  文件
    • 9.1 第一节  文件概述
    • 9.2 第二节  文件的打开和关闭
    • 9.3 第三节 文件的读/写函数
    • 9.4 第四节  文件定位函数
    • 9.5 第五节  文件应用实例
  • 10 附录
    • 10.1 附录A  基本字符ASCII码表(0~127)
    • 10.2 附录B  运算符优先级表
    • 10.3 附录C 常用C库函数表
    • 10.4 附录D  编译常见错误提示
    • 10.5 附录E  常见C语言英语单词
    • 10.6 附录F  如何从十进制转换为二进制
    • 10.7 附录G  如何把二进制数转化为十进制数
    • 10.8 附录H  什么是编译器
    • 10.9 附录I  与编译器相关的几个知识点
第八节  常用的数学函数
  • 1 文字讲解
  • 2 视频讲解
  • 3 过关测试

2.7  常用的数学函数

     前面介绍了几个常用的输入/输出函数。除了这些函数外,C语言还提供了许多具有不同功能的基本函数,比较常用的是数学函数,使用这些函数可以进行一些基本的数学运算。

     在使用数学函数之前,要求在程序开头包含头文件 math.h,

     即    #include <math.h>

     以下函数的参数类型和函数值类型均为实型:

      sqrt( x )     求x的平方根,x≥0

      pow(x,y)    求

      exp(x)       求 

      abs(x)      求x的绝对值,x为int型数。

      fabs(x)     求x的绝对值,x为 double型浮点数。

      log(x)        求x的对数,以e为底,x>0

      log10(x)    求x的对数,以10为底,x>0

      sin(x)        求x的正弦,x的单位为弧度。

      cos(x)        求x的余弦,x的单位为弧度。

      tan(x)         求x的正切,x的单位为弧度。

   度(d) --> 弧度(a)   a=pi*d/180

      rand( )       产生0~32767范围内的随机整数。

例2-14   输入一个正数x,求x的平方根。

  1. #include   <stdio.h>

  2. #include   <math.h>

  3. main()

  4. {   float x;   double  y;

  5.     printf("input x:");

  6.     scanf("%f", &x );

  7.     y= sqrt( x );

  8.     printf("sqrt(%-7.2f)=%7.2f  \n", x, y);

  9. }

运行程序的结果如图2-12所示。


图2-12  例2-14运行结果

其中,格式符“%-7.2f”中的“-”号表示输出格式为左对齐

例2-15   使用pow()函数求幂函数   

  1. #include <stdio.h>

  2. #include <math.h>

  3. main()

  4. {   float a, b;   double y;

  5.    printf("a=");    scanf("%f", &a );

  6.    printf("b=");     scanf("%f", &b );

  7.    y=pow(a, b);

  8.    printf("a=%.1f, b=%.1f, a^b =%.1f\n", a, b, y );

  9. }

运行上面的程序,输出结果如图2-13所示。


例2-16    使用pow()函数求平方根或立方根

源程序如下:

  1.  #include  <stdio.h>

  2. #include   <math.h>

  3. main()

  4. {     double   k, j;

  5.       k=25;

  6.       j=1.0 / 2;

  7.       printf("%f, %f, %f \n", pow(k, j), sqrt(k), pow(k, 1/3.0));

  8. }

 运行结果如图2-14所示。


图2-14  例2-16运行结果

由例2-16可知,可利用pow()函数求某非负数的平方根或立方根。注意上面的语句:

 不能写成:

 j=1/2;

 这是因为“j=1/2”为两个整数相除,结果为整数0。应该使用以下格式:

 pow(x,0.5)   或pow(x,1.0/2)   或pow(x,1/2.0)

例2-17  三角函数的应用。

 使用三角函数时,若给定的是角度值x,则应转换为弧度 x*PI/180,其中PI为圆周率,x为实数。

源程序如下: 

  1. #include <stdio.h>

  2.  #include <math.h>

  3.  #define PI    3.1415926

  4.  main()

  5. {    float x, alfa;

  6.      printf("输入一个角度数:    ");

  7.      scanf("%f", &x);

  8.      alfa = x*PI/180;

  9.      printf("弧度数为: %7.1f, 正弦函数sin(%7.1f)=%7.1f\n",alfa, alfa, sin(alfa));

  10.  }

该程序运行结果如图2-15所示。


图2-15   例2-17运行结果

例2-18    计算一元二次方程的根

程序分析:

计算一元二次方程的根,相关数学公式如下:

                

                    

              

测试案例:计算方程的根

          从键盘上输入:1,-2,-3;期望结果:x1=3,x2=-1

源程序如下:

  1. #include    <stdio.h>

  2. #include    <math.h>

  3. main( )

  4. {     float a, b, c, dlta;   double x1,   x2;

  5.       scanf("%f,%f,%f", &a, &b, &c);

  6.       dlta=b*b-4 * a * c;

  7.       x1 = (-b + sqrt(dlta)) /( 2*a);

  8.       x2 = (-b - sqrt(dlta)) /(2*a);

  9.       printf("x1=%f, x2=%f\n", x1, x2);

  10. }

 运行结果如图2-16所示。

图2-16  例2-18运行结果

从以上程序运行结果分析,符合预期结果,从而验证程序正确。