本文目錄一覽:
- 1、用C語言求sinx的值,望高人指點
- 2、C語言 求sin值
- 3、c語言計算sinx的值問題,運行無錯但得不到想要的結果.求解
- 4、C語言求sinx
- 5、求幫看c語言計算sinx的一個程序!
- 6、用C語言程序算sinX的值
用C語言求sinx的值,望高人指點
你的factorial是一個函數,好象不可以直接乘以一個整數的吧,還有double factorial(int n)是不是需要一個返回值呢。if(n==0) return 1;只是在n=0的時候有返回值,n!=0就沒有了
C語言 求sin值
首先,你的測試輸入和測試輸出的數據是對應不上的,你寫錯信息了!
輸入 3.1415026, 3 的時候,輸出才是 -0.07522 。
好了,正確的參考代碼如下:
#include stdio.h
double power(double x, int n); // 計算乘方的函數
double fact(int n); // 計算階乘的函數
int main(int argc, char const *argv[])
{
double x, s;
int n;
int sign = 1; //正負號開關變數,初始狀態為正
printf(“Please input a decimal number x , a postive int number n :\n”);
scanf(“%lf%d”, x, n);
for (int i = 0; i = n; i++)
{
s += sign * power(x, 2 * i + 1) / fact(2 * i + 1);
sign = -sign;
}
printf(“x = %g, n = %d, s = %.5lf \n”, x, n, s);
return 0;
}
//計算x^n
double power(double x, int n)
{
double p = 1;
// 這樣的循環條件,很簡潔。因為函數傳入的是形參,也不會對main的變數造成影響。
for (; n–;)
{
p *= x;
}
return p;
}
// 計算n!
double fact(int n)
{
double f = 1;
// 這樣的循環條件,很簡潔。因為函數傳入的是形參,也不會對main的變數造成影響。
for (; n;)
{
f *= n–;
}
return f;
}
測試截圖:(分別測試了角度為 180度、90度、45度的弧度值)
輸入和輸出語句,你不想要這麼多的提示信息的話,自己修改一下就可以了。
如有幫助,煩請點採納,謝謝!
c語言計算sinx的值問題,運行無錯但得不到想要的結果.求解
/*sin(x)的泰勒展開式
sin(x)=x-x**3/(3!)+x**5/(5!)+……..
*/
#include stdio.h
#include math.h
#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(d1e-5)//可以寫成1e-5,不需再調用函數
{
break;
}
}
printf(“sinx的值為%f\n”,sinx);
printf(“運行的項數為%d\n”,a);
printf(“sin(x)的值為%lf\n”,sin(x));//作測試對比,注意輸入為弧度
}
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的一個程序!
程序是對的。
從高數上面考慮的話,該級數的收斂域是負無窮到正無窮,但是當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語言,絕對對你今後學習其他語言有很大幫助。
*************************************************************************/
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/158405.html