当前位置:首页 » 编程语言 » c语言计算sin2
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言计算sin2

发布时间: 2022-08-16 08:16:30

A. c语言 求sin值

首先,你的测试输入和测试输出的数据是对应不上的,你写错信息了!

输入 3.1415026, 3 的时候,输出才是 -0.07522 。

好了,正确的参考代码如下:

#include<stdio.h>

doublepower(doublex,intn);//计算乘方的函数
doublefact(intn);//计算阶乘的函数

intmain(intargc,charconst*argv[])
{
doublex,s;
intn;
intsign=1;//正负号开关变量,初始状态为正
printf("Pleaseinputadecimalnumberx,apostiveintnumbern: ");
scanf("%lf%d",&x,&n);

for(inti=0;i<=n;i++)
{
s+=sign*power(x,2*i+1)/fact(2*i+1);
sign=-sign;
}

printf("x=%g,n=%d,s=%.5lf ",x,n,s);
return0;
}

//计算x^n
doublepower(doublex,intn)
{
doublep=1;
//这样的循环条件,很简洁。因为函数传入的是形参,也不会对main的变量造成影响。
for(;n--;)
{
p*=x;
}
returnp;
}

//计算n!
doublefact(intn)
{
doublef=1;
//这样的循环条件,很简洁。因为函数传入的是形参,也不会对main的变量造成影响。
for(;n;)
{
f*=n--;
}
returnf;
}

测试截图:(分别测试了角度为 180度、90度、45度的弧度值)

B. C语言编写sin函数求教!

1.
C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果
2.
下面用for循环实现sin的算法,程序代码如下:
#include<stdio.h>
#include<math.h>
void
main()
{
int
i;
float
x,sum,a,b;
//sum代表和,a为分子,b为分母
char
s;
printf("please
input
x");
scanf("%f",&x);
s=1;
sum=0;
a=x;

//分母赋初值
b=1;

//分子赋初值
for(i=1;a/b>=1e-6;i++)
{

sum=sum+s*a/b;

//累加一项

a=a*x*x;

//求下一项分子

b=b*2*i*(2*i+1);

//求下一项分母

s*=-1;
}

printf("sum=%f\n",sum);
}

3.
关于上述程序的几点说明:上述程序的计算结果精确到小数点后六位;上述程序运用了sin的泰勒展开式
sin
x=x-x^3/3!+x^5/5!
......
,程序中将sin泰勒公式中的每一项拆成了分子,分母以及每一项前的符号这三项,以便于每一项的累加

C. C/C++:sin1+sin2+sin3......+sinn在c语言中如何实现

答:C语言有专门的三角函数库函数,如sin、cos等。使用时要包含头文件math.h,书写格式如sin(x)、cos(x)等;这些函数的形式参数是double型的且必须以弧度计,返回值也是double型。如本题面中的版式写成C语言就是sin(1)、sin(2)、sin(3)、sin(n)等,得用一个循环语句计算。

D. 用C语言求正弦值

1、C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果。


2、下面用for循环实现sin的算法,程序代码如下:

#include<stdio.h>

#include<math.h>


voidmain()


{


inti;


floatx,sum,a,b;//sum代表和,a为分子,b为分母


chars;


printf("pleaseinputx");


scanf("%f",&x);


s=1;


sum=0;


a=x;//分母赋初值


b=1;//分子赋初值


for(i=1;a/b>=1e-6;i++)


{


sum=sum+s*a/b;//累加一项


a=a*x*x;//求下一项分子


b=b*2*i*(2*i+1);//求下一项分母


s*=-1;


}


printf("sum=%f ",sum);


}

3、 关于上述程序的几点说明:上述程序的计算结果精确到小数点后六位;上述程序运用了sin的泰勒展开式 sin x=x-x^3/3!+x^5/5! ...... ,程序中将sin泰勒公式中的每一项拆成了分子,分母以及每一项前的符号这三项,以便于每一项的累加。

E. C语言中,如何把sin(2)这样的三角函数表达式在编译时预处理掉

预处理的概念就是不解析代码。。既然不解析代码又如何计算sin(2)的值?
楼主遇到的问题可以改写代码成
int
a=(int)sin(2.0);如果需要四舍五入可以改成
int
a=(int)(sin(2.0)+0.5);
当然也能用
#define
SIN2
0
不过不推荐

F. C语言用泰勒级数计算sinx,计算sin1,sin2都正确,sin3不正确,不知道哪里错了,求大神指导

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

main()
{
doublefactorial(intm);
intn=1,i=1;/*i为计数变量*/
doublesum=0,x,term;/*term为每一项*/

printf("pleaseinputxtocaculatesinx:");
scanf("%lf",&x);

for(;pow(x,2*n-1)/factorial(2*n-1)>=1e-5;)/*判断最后一项是否大于1e-5*/
{
term=pow(-1,n-1)*pow(x,2*n-1)/factorial(2*n-1);/*计算每一项*/
sum=sum+term;
i++;
n++;
}
sum=sum+pow(-1,n-1)*pow(x,2*n-1)/factorial(2*n-1);/*补加上最后一个小于1e-5的项*/

printf("sin(x)=%lf time=%d ",sum,i);

return0;
}

doublefactorial(intm)/*计算阶乘改成double类型,不然在超过13之后的数都溢出了!*/
{
doublefact=1;
if(m==0)
return(fact);
else
{
while(m)
{
fact*=m;
m--;
}
return(fact);
}
}

G. C语言中正弦函数

doublesin(doublex);

sin参数为double类型,返回值也为double

#include<stdio.h>
#include<math.h>
intmain()
{
constdoublepi=3.1415926;
doubled,e;
scanf("%f",&d);
e=sin(2*pi*d/63.84);
printf("%lf ",e);
return0;
}

H. C语言sin怎么用

C语言sin()用来计算参数x 的正玄值,然后将结果返回。返回-1 至1 之间的计算结果。

例子:

#include <math.h>

main(){

double answer = sin(0.5);

printf("sin(0.5) = %f ", answer);

}

执行

sin(0.5) = 0.479426

C语言sin():

sin()原型:double sin(double x)

sin()角度与弧度:

π=180°

1°=π/180

1(rad)=180/π

角度转弧度:用角度乘以π/180

弧度转角度:用弧度乘以180/π,或者用rtod()函数

(8)c语言计算sin2扩展阅读:

与sin相似的acos函数

函数名: acos

功 能:计算并返回arccos(x)值、要求-1<=X<=1

函数与形参类型:

double acos(x)

double x;

程序例:

#include <stdio.h>

#include <math.h> int main(void)

{

double result;

double x = 0.5; result = acos(x);

printf("The arc cosine of %lf is %lf ", x, result);

return 0;

}

I. 怎么用c语言编正弦函数计算

  1. 楼上的各位已经提到了scanf输入控制与目标数据类型不匹配的问题,即应改为:scanf("%f",&n);

  2. 另外三楼有提到说角度与弧度的问题,就是说sin()和cos()输入需要保证为弧度,所以你需要转换一下,比如你这个90度就应该约是1.57。

  3. 其实我觉得应该弄清楚的是为什么在输入控制错误的情况下,还会产生这样的结果。

    这是因为输入控制错误,导致n的值没有变化,也就是说后边计算正弦余弦的时候也是计算的n的初始值。你可以在先不改正输入控制的前提下,在输入语句前加一个输出语句,看看n值为多少,如果没猜错的话,应该是0,进而计算的结果也当是正确的。也许你要问了,不是说局部变量自动变量未初始化的话值是随机值么,怎么会是0呢?是的,我也很纳闷,也许适合具体的编译环境有关吧,不同的编译环境对这种情况可能处理会有所不同吧,留待自己去探究咯~

    希望能帮到你~欢迎交流~