我正在编制的程序应该计算以下函数:

f(x,y)= 2 sin(x) + cos(y) - tg(x+y)

我试图做到以下几点:
#include<stdio.h>
#include<math.h>

double toDegrees(double radians){
  return radians * (180.0 / M_PI);
}

int main(void){
  double x,y;
  printf("What's the value of x?\n");
  scanf("%lf", &x);
  printf("What's the value of y?\n");
  scanf("%lf", &y);
  printf("The values are %lf\n", toDegrees(2*sin(x)+cos(y)-tan(x+y)));
  return 0;
}

to degrees函数将函数的默认输出从math.h从弧度转换为度。
不带函数toDegrees的预期输出(弧度)是-2.07746705002370603998583034482545686045261881310920233482
这确实是产出。
函数toDegrees的预期输出(度)是1.881737400858622861572140743032864796565271853728846372576
但是,输出是-119.030094
我期望的输出是我在here中用x=10y=21得到的输出。
为什么会发生这种情况,我该如何解决?
我把-我是汇编。

最佳答案

这不是编程错误,而是数学错误:三角函数的输入是以度或弧度表示的角度,而不是输出。另外,你的转换方法是错误的:你想把度数转换成弧度,而不是弧度转换成度数。

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

double toRadians(double degrees){
  return degrees * (M_PI / 180.0);
}

int main(void){
  double x,y;
  printf("What's the value of x?\n");
  scanf("%lf", &x);
  printf("What's the value of y?\n");
  scanf("%lf", &y);
  printf("The values are %lf\n", 2*sin(toRadians(x))+cos(toRadians(y))+tan(toRadians(x+y)));
  return 0;
}

修复了这两个错误后,输入10表示x,输入21表示y,将正确返回所需的1.881737

关于c - math.h中的函数未返回期望值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58468353/

10-17 00:33
查看更多