交互式教学课件

C语言常用数学函数概述

在C语言中,数学函数提供了丰富的数学运算功能,使用这些函数可以进行基本的数学计算。

使用数学函数的准备工作

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

#include_____________请同学补齐________________

数学函数的特点

  • 大多数数学函数的参数和返回值类型均为双精度浮点型(double)
  • 使用数学函数需要注意参数的范围限制
  • 数学函数提供了各种数学运算,包括幂运算、三角函数、对数函数等

注意:使用数学函数时,需要确保参数在函数定义的范围内,否则可能导致错误或未定义行为。

最简单的数学函数示例

#include 
#include 

int main() {
    double x = 25.0;
    double y = sqrt(x);  // 计算平方根
    
    printf("sqrt(%.2f) = %.2f\n", x, y);
    return 0;
}

常用数学函数列表

C语言提供了丰富的数学函数,下表列出了最常用的一些数学函数及其功能:

sqrt(x)

功能:计算x的平方根

参数要求:x ≥ 0

返回值:double类型

pow(x, y)

功能:计算x的y次幂

参数要求:无特殊限制

返回值:double类型

exp(x)

功能:计算e的x次幂

参数要求:无特殊限制

返回值:double类型

fabs(x)

功能:计算x的绝对值

参数要求:无特殊限制

返回值:double类型

log(x)

功能:计算x的自然对数(以e为底)

参数要求:x > 0

返回值:double类型

log10(x)

功能:计算x的常用对数(以10为底)

参数要求:x > 0

返回值:double类型

sin(x)

功能:计算x的正弦值

参数要求:x为弧度值

返回值:double类型

cos(x)

功能:计算x的余弦值

参数要求:x为弧度值

返回值:double类型

tan(x)

功能:计算x的正切值

参数要求:x为弧度值

返回值:double类型

注意:三角函数中的参数x应以弧度为单位,而不是角度。如果需要使用角度,需要先将角度转换为弧度。

数学函数应用示例

下面通过几个示例展示数学函数在实际编程中的应用。

示例1:计算平方根

#include 
#include 

int main() {
    float x;
    double y;
    
    printf("input x: ");
    scanf("%f", &x);
    y = sqrt(x);
    printf("sqrt(%.2f) = %.2f\n", x, y);
    
    return 0;
}

示例2:使用pow()函数求幂

#include 
#include 

int main() {
    float a, b;
    double y;
    
    printf("a = ");
    scanf("%f", &a);
    printf("b = ");
    scanf("%f", &b);
    
    y = pow(a, b);
    printf("%.2f的%.2f次方 = %.2f\n", a, b, y);
    
    return 0;
}

示例3:使用pow()函数求平方根或立方根

#include 
#include 

int main() {
    double k = 25.0;
    double j = 1.0 / 2;  // 注意:不能写成1/2
    
    printf("%.2f, %.2f, %.2f\n", 
           pow(k, j),     // 25的1/2次方(平方根)
           sqrt(k),       // 25的平方根
           pow(k, 1/3.0)  // 25的立方根
    );
    
    return 0;
}

重要提示:在使用pow()函数计算分数次幂时,指数部分必须使用浮点数。例如,计算平方根应使用pow(x, 0.5)pow(x, 1.0/2)pow(x, 1/2.0),而不能使用pow(x, 1/2),因为1/2在整数除法中结果为0。

示例4:三角函数的应用

#include 
#include 

#define PI 3.1415926

int main() {
    float x;
    
    printf("输入一个角度数:");
    scanf("%f", &x);
    
    // 将角度转换为弧度后再计算正弦值
    double radians = x * PI / 180;
    printf("sin(%.2f°) = %.2f\n", x, sin(radians));
    
    return 0;
}

示例5:求解一元二次方程

#include 
#include 

int main() {
    float a, b, c, d;
    double x1, x2;
    
    a = 5;
    b = 17;
    c = 11;
    
    d = b * b - 4 * a * c;
    x1 = (-b + sqrt(d)) / (2 * a);
    x2 = (-b - sqrt(d)) / (2 * a);
    
    printf("x1 = %.6f, x2 = %.6f\n", x1, x2);
    
    return 0;
}

数学函数练习题

以下练习题基于湖南对口升学C语言高考试题,测试对数学函数的理解和应用。

1. 下列哪个函数可以计算x的平方根?

A. pow(x, 2)
B. sqrt(x)
C. exp(x)
D. fabs(x)

答案:B. sqrt(x)

解析:sqrt()函数专门用于计算平方根。pow(x, 0.5)也可以计算平方根,但pow(x, 2)计算的是x的平方。

2. 下列代码的输出结果是?

#include 
#include 
int main() {
    printf("%.1f", pow(2, 3));
    return 0;
}
A. 6
B. 8
C. 9
D. 2

答案:B. 8

解析:pow(2, 3)计算2的3次方,即2×2×2=8。

3. 使用三角函数时,参数的单位是什么?

A. 角度
B. 弧度
C. 度分秒
D. 任意单位

答案:B. 弧度

解析:C语言的三角函数(sin, cos, tan等)要求参数以弧度为单位。如果需要使用角度,需要先转换为弧度。

4. 下列哪个表达式可以正确计算x的立方根?

A. pow(x, 1/3)
B. pow(x, 3.0)
C. pow(x, 1.0/3)
D. sqrt(x, 3)

答案:C. pow(x, 1.0/3)

解析:计算立方根需要使用分数指数,且必须确保指数是浮点数。1/3在整数除法中结果为0,因此A选项错误。

5. 下列代码的输出结果是?

#include 
#include 
int main() {
    printf("%.1f", fabs(-3.5));
    return 0;
}
A. -3.5
B. 3.5
C. -3
D. 3

答案:B. 3.5

解析:fabs()函数用于计算浮点数的绝对值,因此fabs(-3.5)的结果是3.5。

知识点总结与易错点

知识点总结

  • 头文件:使用数学函数前必须包含#include
  • 常用数学函数:
    • sqrt(x) - 平方根函数,x ≥ 0
    • pow(x, y) - 幂函数,计算x的y次方
    • fabs(x) - 浮点数绝对值函数
    • sin(x), cos(x), tan(x) - 三角函数,x为弧度
    • exp(x) - 指数函数,计算e的x次方
    • log(x) - 自然对数函数,x > 0
    • log10(x) - 常用对数函数,x > 0
  • 注意事项:
    • 注意函数的参数范围和返回值类型
    • 三角函数参数使用弧度而非角度
    • 使用pow()函数时注意指数部分的类型

易错点

  • 忘记包含math.h头文件
  • 使用整数除法作为pow()函数的指数参数
  • 对sqrt()函数传入负值参数
  • 对log()或log10()函数传入非正值参数
  • 将角度值直接传递给三角函数而不转换为弧度
  • 混淆fabs()(浮点绝对值)和abs()(整数绝对值)

综合练习题

1. 下列代码的输出结果是?

#include 
#include 
int main() {
    printf("%.1f", sqrt(9) + pow(2, 3));
    return 0;
}
A. 11
B. 10
C. 17
D. 12

答案:A. 11

解析:sqrt(9) = 3.0,pow(2, 3) = 8.0,两者相加为11.0,输出格式为%.1f,所以是11.0。

2. 下列哪个表达式可以正确计算sin(30°)的值?

A. sin(30)
B. sin(30 * 3.1415926 / 180)
C. sin(30 * 180 / 3.1415926)
D. sin(30, 弧度)

答案:B. sin(30 * 3.1415926 / 180)

解析:三角函数需要弧度作为参数,角度转换为弧度的公式是:弧度 = 角度 × π / 180。

3. 下列代码的输出结果是?

#include 
#include 
int main() {
    printf("%.1f", pow(4, 1.0/2) + pow(8, 1.0/3));
    return 0;
}
A. 4
B. 6
C. 8
D. 10

答案:A. 4

解析:pow(4, 1.0/2)计算4的平方根,结果为2.0;pow(8, 1.0/3)计算8的立方根,结果为2.0;两者相加为4.0。

4. 关于数学函数,以下说法正确的是?

A. 数学函数的参数都是整数类型
B. 数学函数的返回值都是整数类型
C. 使用数学函数必须包含math.h头文件
D. 数学函数不需要考虑参数的范围限制

答案:C. 使用数学函数必须包含math.h头文件

解析:数学函数通常使用双精度浮点数作为参数和返回值,且需要注意参数的范围限制,如sqrt()的参数不能为负数。

5. 下列代码的输出结果是?

#include 
#include 
int main() {
    printf("%.1f", log10(100) + fabs(-5.5));
    return 0;
}
A. 7.5
B. 105.5
C. 15.5
D. 10.5

答案:A. 7.5

解析:log10(100) = 2.0(因为10²=100),fabs(-5.5) = 5.5,两者相加为7.5。