刚刚编好,记录一下:
#include <stdio.h> #include <math.h> int main(void) { while(1) { double n; double s; double c; double t; double pi = 3.14159265358979323846264338327; scanf("%lf",&n); s=sin(n*2*pi/360); //求n的sin()值,并返回给n c=cos(n*2*pi/360); //求n的cos()值,并返回给n t=tan(n*2*pi/360);//求n的tan()值,并返回给n printf("sin %f = %.15lf\n",n,s);//输出 printf("cos %f = %.15lf\n",n,c);//输出 printf("tan %f = %.15lf\n",n,t);//输出 } }
π用了近似值,不过也够用了。值得注意的是math.h中的三角函数使用弧度做单位的,必须进行转换。不过,这只是输入以度为单位的三角函数值,也有以度分秒为单位的:
#include <stdio.h> #include <math.h> int main(void) { while(1){ double a; double b; double c; double n; printf("输入:度,分,秒\n"); scanf("%lf,%lf,%lf",&a,&b,&c); n = a + b/60 +c/3600; printf("度数:%.10lf\n",n); double s; double t; double pi = 3.14159265358979323846264338327; s=sin(n*2*pi/360); //求n的sin()值,并返回给n c=cos(n*2*pi/360); //求n的cos()值,并返回给n t=tan(n*2*pi/360);//求n的tan()值,并返回给n printf("sin %f = %.15lf\n",n,s);//输出 printf("cos %f = %.15lf\n",n,c);//输出 printf("tan %f = %.15lf\n",n,t);//输出 } }
这里面顺便将度分秒格式的转化为了度,还是挺好用的。
-------------------------------------------------------------------------------------------2018-6-18更新----------------------------------------------------------------------------------------------------------------------------
最近又尝试用上面算出的值反过来求角度,用了反三角函数,结果如下:
#include <stdio.h> #include <math.h> int main(void) { while(1) { double n; double s; double c; double t; double pi=3.14159265358979323846264338327; printf("输入:sin/cos/tan值\n"); scanf("%lf",&n); s=asin(n)*360/(2*pi); //求n的asin()值,并返回给n c=acos(n)*360/(2*pi); //求n的acos()值,并返回给n t=atan(n)*360/(2*pi);//求n的atan()值,并返回给n printf("asin %f = 角度%.15lf\n",n,s);//输出 printf("acos %f = 角度%.15lf\n",n,c);//输出 printf("atan %f = 角度%.15lf\n",n,t);//输出 } }
反三角函数算出来的是弧度,需要转化为角度。