在 C 语言中计算反正弦(arcsin)

CCBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何在C编程中计算反正弦(arcsin)函数。本实验涵盖两个主要步骤:读取-1到1之间的有效输入值,并使用math.h库中的asin()函数计算输入值的反正弦。程序将验证输入范围,然后以弧度显示计算出的角度。本实验旨在让你通过C语言实际理解三角函数计算以及asin()函数的用法。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/ControlFlowGroup -.-> c/if_else("If...Else") c/FunctionsGroup -.-> c/math_functions("Math Functions") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-435148{{"在 C 语言中计算反正弦(arcsin)"}} c/operators -.-> lab-435148{{"在 C 语言中计算反正弦(arcsin)"}} c/if_else -.-> lab-435148{{"在 C 语言中计算反正弦(arcsin)"}} c/math_functions -.-> lab-435148{{"在 C 语言中计算反正弦(arcsin)"}} c/user_input -.-> lab-435148{{"在 C 语言中计算反正弦(arcsin)"}} c/output -.-> lab-435148{{"在 C 语言中计算反正弦(arcsin)"}} end

读取-1到1之间的值

在这一步中,你将学习如何读取并验证用于在C语言中计算反正弦(arcsin)函数的数值输入。反正弦函数要求输入值严格在-1和1之间。

首先,为程序创建一个新的C文件:

cd ~/project
nano arcsin_input.c

现在,编写以下代码来读取并验证输入:

#include <stdio.h>

int main() {
    double input;

    printf("Enter a value between -1 and 1 for arcsin calculation: ");
    scanf("%lf", &input);

    // 验证输入范围
    if (input < -1 || input > 1) {
        printf("Error: Input must be between -1 and 1.\n");
        return 1;
    }

    printf("Valid input received: %f\n", input);

    return 0;
}

编译并运行程序:

gcc arcsin_input.c -o arcsin_input
./arcsin_input

示例输出:

Enter a value between -1 and 1 for arcsin calculation: 0.5
Valid input received: 0.500000

在这段代码中,我们:

  • 使用scanf()读取双精度浮点数
  • 检查输入是否在-1到1的有效范围内
  • 如果输入超出有效范围,则打印错误消息
  • 当输入符合标准时,确认输入有效

使用 asin() 函数

在这一步中,你将学习如何使用 math.h 库中的 asin() 函数来计算有效输入值的反正弦(arcsin)。

首先,修改上一个程序以包含 asin() 函数:

cd ~/project
nano arcsin_calculation.c

编写以下代码来计算并显示反正弦结果:

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

int main() {
    double input;

    printf("Enter a value between -1 and 1 for arcsin calculation: ");
    scanf("%lf", &input);

    // 验证输入范围
    if (input < -1 || input > 1) {
        printf("Error: Input must be between -1 and 1.\n");
        return 1;
    }

    // 使用 asin() 函数计算反正弦
    double result = asin(input);

    printf("Input: %f\n", input);
    printf("Arcsin result: %f radians\n", result);

    return 0;
}

使用数学库编译程序:

gcc arcsin_calculation.c -o arcsin_calculation -lm

运行程序并使用不同的输入进行测试:

./arcsin_calculation

示例输出:

Enter a value between -1 and 1 for arcsin calculation: 0.5
Input: 0.500000
Arcsin result: 0.523599 radians

关于 asin() 函数的要点:

  • math.h 库中定义
  • 接受 -1 到 1 之间的值作为输入
  • 返回以弧度为单位的角度
  • 在编译期间需要使用 -lm 标志进行链接

以弧度为单位打印角度

在这一步中,你将学习如何将反正弦结果转换并以不同的角度表示形式(包括弧度和度)进行打印。

修改上一个程序以包含度的转换:

cd ~/project
nano arcsin_angle_conversion.c

编写以下代码以显示弧度和度的角度:

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

#define PI 3.14159265358979323846

int main() {
    double input;

    printf("Enter a value between -1 and 1 for arcsin calculation: ");
    scanf("%lf", &input);

    // 验证输入范围
    if (input < -1 || input > 1) {
        printf("Error: Input must be between -1 and 1.\n");
        return 1;
    }

    // 计算反正弦
    double radian_result = asin(input);

    // 将弧度转换为度
    double degree_result = radian_result * (180.0 / PI);

    // 格式化打印结果
    printf("Input: %f\n", input);
    printf("Arcsin result (radians): %f\n", radian_result);
    printf("Arcsin result (degrees): %f\n", degree_result);

    return 0;
}

编译程序:

gcc arcsin_angle_conversion.c -o arcsin_angle_conversion -lm

运行程序并进行测试:

./arcsin_angle_conversion

示例输出:

Enter a value between -1 and 1 for arcsin calculation: 0.5
Input: 0.500000
Arcsin result (radians): 0.523599
Arcsin result (degrees): 30.000000

关于角度转换的要点:

  • 弧度是 asin() 的默认返回类型
  • 转换为度:乘以 (180/π)
  • 使用 #define PI 进行精确转换
  • 格式化有助于提高结果的可读性

总结

在本实验中,你学习了如何读取并验证-1到1之间的数值输入,这是在C语言中计算反正弦(arcsin)函数所必需的。然后,你使用了math.h库中的asin()函数来计算有效输入的反正弦,并以弧度为单位打印结果。

关键学习要点是:1)验证输入范围以确保其在-1到1的有效范围内,以及2)利用asin()函数计算输入值的反正弦。