要用弧度计算的,另外,pintf语句中,应该是"%lf",不是"f%"
10年积累的成都网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有舞钢免费网站建设让你可以放心的选择与我们合作。
sin()是三角函数,参数使用的是弧度,不是度。
asin()才是反三角函数。
资料 :
NAME
asin, asinf, asinl - arc sine function
SYNOPSIS
#include math.h
double asin(double x);
float asinf(float x);
long double asinl(long double x);
Link with -lm.
DESCRIPTION
The asin() function calculates the arc sine of x; that is the value
whose sine is x. If x falls outside the range -1 to 1, asin() fails
and errno is set.
RETURN VALUE
The asin() function returns the arc sine in radians and the value is
mathematically defined to be between -PI/2 and PI/2 (inclusive).
其实很简单,sin这个函数的参数,是弧度数,不是角度数。比如你想求50度角的正弦,就必须转化成50度的弧度数,再算,保证没错,
问题有很多,第一个
printf("enter 三角函数名:");
scanf("%s",j);
输入字符串时数组名本身就代表地址,因此不需要加取地址符号,直接携程scanf("%s",j);就行了。
第二:if(j=="sin")这里比较字符串的值错了,应该写成if( 0 == strcmp(j, "sin") ),因为j是数组名,代表的是地址,而且是一个栈内存中的地址,“sin”也表示地址,但是是常量区的地址,这两个地址肯定是不相等的嘛,因此比较字符串是否相等应该采用函数strcmp系列函数。
strncmp(); 比较两个字符串的前n个字符是否相等,区分大小写
strncasecmp();比较两个字符串的前n个字符项否相等,忽略大小写
strcasecmp();比较两个字符串是否相等,忽略大小写
第三个问题:为使得代码更加严谨,数组j最好定义长一点,因为字符串的结束标志为‘\0’而你之定义3位,则'\0'没有空间存储,所以很容易出现各种意想不到的问题。
在Linux下
gcc编译时
默认是不会加入数学函数库的
所以 你要使用math.h中的函数
除了要Include以外
编译的时候还要加上-lm
比如
gcc test.c -o my.out -lm
你的程序没有问题
vc6.0 编译
q=(sin(x*PI/180)+sin(y*PI/180))/tan(z*PI/180);处出现
warning:“e:\c\bhj\bhj.cpp(16) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data”
这是因为sin 和 tan的 返回值是双精度double类型。把它赋值给 float q,就会丢失数据。
但是计算结果是基本正确的。如果想更精确计算 就把所有的 float 全部改成 double
#include stdio.h
#include math.h
int main()
{
double n; //sin cos是函数,不能定义成变量
scanf("%lf",n);
n=sin(n); //求n的sin()值,并返回给n
printf("%lf\n",n);//输出n
return 0;
}
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款