math.h中的函数未返回期望值

杜阿尔特·阿里巴斯

我正在编写的程序应该计算以下功能:

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;
}

函数toDegrees将把math.h中函数的默认输出从弧度转换为度。

不带toDegrees功能的预期弧度输出为 -2.07746705002370603998583034482545686045261881310920233482

这确实是输出。

函数toDegrees的预期输出(以度为单位)为 1.881737400858622861572140743032864796565271853728846372576

但是,输出为-119.030094

我期待的输出是输出我得到了x=10y=21这里

为什么会发生这种情况,我该如何解决?

我确实把-lm做为汇编。

约瑟夫·西布尔-恢复莫妮卡

这不是编程错误,而是数学错误:触发函数的输入是以度或弧度为单位的角度,而不是输出。另外,转换是错误的方法:您想将度数转换为弧度,而不是将弧度转换为度。

#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;
}

修正了这两个错误之后,正确输入10x和21y即可返回所需的1.881737

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

BigInteger数学函数未返回期望值

来自分类Dev

Redshift中的REGEXP_SUBSTR函数未返回期望值

来自分类Dev

递归函数未在PHP中返回期望值

来自分类Dev

Spock存根未返回期望值

来自分类Dev

COUNTIF公式未返回期望值

来自分类Dev

Ruby命令未返回期望值

来自分类Dev

Math.sin中的Math.radians

来自分类Dev

具有日期条件的SQL窗口函数未返回期望值

来自分类Dev

在一种特定情况下,函数未返回期望值

来自分类Dev

汇总列中的总值时,SQL查询未返回期望值

来自分类Dev

date.getTimezoneOffset()未返回期望值

来自分类Dev

Mock上的设置未返回期望值

来自分类Dev

正则表达式未返回期望值

来自分类Dev

日期时间转换未返回期望值

来自分类Dev

Hibernate搜索通配符未返回期望值

来自分类Dev

字符串数组未返回期望值

来自分类Dev

DATEDIF()未返回期望值,如何计算月龄?

来自分类Dev

更正此代码,以便greet函数返回期望值

来自分类Dev

Java Math未返回正确答案

来自分类Dev

Verilog在简单分配中未输出期望值

来自分类Dev

Java Math.acos()返回值

来自分类Dev

Lua math.floor 返回错误的值

来自分类Dev

使用Apache Commons Math插值函数

来自分类Dev

使用Math.pow()函数

来自分类Dev

使用Math.Pow函数

来自分类Dev

Math.Sinh()在C#中返回不同的值

来自分类Dev

Math.Sinh()在C#中返回不同的值

来自分类Dev

Perl中Math :: BaseCalc的问题

来自分类Dev

在JavaScript中扩展Math对象