當前位置:首頁 » 編程語言 » 用c語言計算sinx並輸出值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

用c語言計算sinx並輸出值

發布時間: 2022-07-28 09:42:57

① 用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泰勒公式中的每一項拆成了分子,分母以及每一項前的符號這三項,以便於每一項的累加。

② 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()函數

(2)用c語言計算sinx並輸出值擴展閱讀:

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

}

③ C語言求sinx

修改了一下。 用 前後項的遞推: c=c*x*x/(float)i/(float)(i-1);
#include <stdio.h>
#include <math.h>

int main(){
double x,a,b=1,c=1,sum;
int i,count=1;
scanf("%lf",&x);
sum=x;
for (i=3; fabs(c)>1e-05;i=i+2){
c=c*x*x/(float)i/(float)(i-1);
b= -b;
sum=sum + c*b;
count++;
}
printf("%.3lf %d\n",sum,count);
return 0;
}

④ c語言計算sinx的值問題,運行無錯但得不到想要的結果.求解

/*sin(x)的泰勒展開式
sin(x)=x-x**3/(3!)+x**5/(5!)+........
*/
#include
#include
#define
PI
3.1415926
void
main()
{
int
n=1,c=1,a,b=1;
long
double
x,d=0,sinx=0;//這里定義長雙精度,long
float不是標準的數據類型
printf("請輸入x的值:");
scanf("%lf",&x);//這里輸入一定是%lf,輸入一開始就不對
for(n=1,c=1,a=1;;a++)
{
d=pow(x,n)/c;
sinx+=b*d;
b*=-1;
n++;
c*=n;
n++;
c*=n;
if(d<1e-5)//可以寫成1e-5,不需再調用函數
{
break;
}
}
printf("sinx的值為%f\n",sinx);
printf("運行的項數為%d\n",a);
printf("sin(x)的值為%lf\n",sin(x));//作測試對比,注意輸入為弧度
}

⑤ 用C語言程序算sinX的值

#include
#include
/*計算n的階乘*/
int factor(int n)
{
if(n==1)
return 1;
else
return factor(n-1)*n;
}
/*得到分子的值*/
double get_numerator(double x,int order)
{
return pow(x,order); //求x^order
}
/*得到分母的值*/
double get_denominator(int n)
{
return factor(n); //求n的階乘
}
/*獲得第n項的符號,即(-1)^n*/
int get_symbol(int n)
{
if(n%2 ==0) //n是偶數
return 1;
else
return -1;
}
int main()
{
int i;
double x;
double sin_x=0;
double tmp=0;
printf("please input the x:\n");
scanf("%lf",&x);
for(i=0;;i++)
{
tmp=sin_x; //暫時保存上一步得到的sin值
sin_x += get_numerator(x,2*i+1)/get_denominator(2*i+1)*get_symbol(i);
if(fabs(sin_x-tmp)<1e-6) //精度滿足要求
break;
}
printf("sin(%lf)=%lf\n",x,sin_x);
return 0;
} /***********************************************************************
學好c語言,首先應該把語言的語法學好,這也是基礎。尤其是注意指針部分,可以說這是c語言的精髓,也是c語言能夠直接操作內存的犀利之處。
其次,應該多練代碼,並且注意代碼的可讀性,規范性。
最好,能夠親身用c語言參加某個項目實踐,畢竟實踐出真知。
至於之後c++或者java的學習,要看自己的發展規劃了。不過學好c語言,絕對對你今後學習其他語言有很大幫助。
*************************************************************************/

⑥ C語言編程求sinx的值,輸入3左右的數,會輸出

程序思路問題不大,但是你的for循環的條件會造成死循環(除非你是故意的),不停輸入n,輸出f(n)。還有,你這樣的用指針沒有充分利用函數的返回值,你看我寫的:還有費波那契數列這樣寫會導致很多重復的計算,如果能正向遞推累加(或者開數組記錄已經算過的f(n))則能大大降低時間復雜度

⑦ 用C語言求sinx的值,望高人指點

你的factorial是一個函數,好象不可以直接乘以一個整數的吧,還有double
factorial(int
n)是不是需要一個返回值呢。if(n==0)
return
1;只是在n=0的時候有返回值,n!=0就沒有了

⑧ c語言編程:編程並計算sin(x)的值

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

doublesin(double);
doublenResult(double,double);

intmain()
{
doublex=0;
scanf("%lf",&x);
printf("sin(%lf)=%lf ",x,sin(x));
return0;
}

doublesin(doublex)
{
//sin(x)=x-x^3/3!+x^5/5!-x^7/7!+……+(-1)(n^2n+1)/(2n+1)!+……
inti=0;
doubleresult=0,n=0;
while(fabs(n=nResult(x,2*++i-1))>0e-5)//絕對值大於10^-5次方就循環
result+=(i%2==1)?n:-n;
returnresult;
}

doublenResult(doublex,doublen)
{
//(n^2n+1)/(2n+1)!也就是n/1*n/2*n/3*n/4*.....n/(2n+1)
returnn==1?x:nResult(x,n-1)*x/n;
}

用遞歸給寫了一個 sin(π)=0 sin(π/2)=1

樓主看得上就採納吧

⑨ 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度的弧度值)