1、C語言中要編寫sin函數(shù),實質(zhì)上要利用sin的泰勒公式,然后根據(jù)泰勒公式,將其中的每一項進行分解,最后用循環(huán),累加計算出最終結(jié)果。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、泰和網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為泰和等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
2、下面用for循環(huán)實現(xiàn)sin的算法,程序代碼如下:
#includestdio.h
#includemath.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、? 關(guān)于上述程序的幾點說明:上述程序的計算結(jié)果精確到小數(shù)點后六位;上述程序運用了sin的泰勒展開式 sin x=x-x^3/3!+x^5/5! ...... ,程序中將sin泰勒公式中的每一項拆成了分子,分母以及每一項前的符號這三項,以便于每一項的累加。
C語言是一門通用計算機編程語言,應(yīng)用廣泛。C語言的設(shè)計目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業(yè)平臺。
二十世紀(jì)八十年代,為了避免各開發(fā)廠商用的C語言語法產(chǎn)生差異,由美國國家標(biāo)準(zhǔn)局為C語言制定了一套完整的美國國家標(biāo)準(zhǔn)語法,稱為ANSI C,作為C語言最初的標(biāo)準(zhǔn)。目前2011年12月8日,國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC)發(fā)布的C11標(biāo)準(zhǔn)是C語言的第三個官方標(biāo)準(zhǔn),也是C語言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識符,一定程度上實現(xiàn)了漢字編程。
#includestdio.h
float f(float a,float b,float c,float x)
{
float y;
y=a*x*x+b*x+c;
return y;
}
void main()
{
float a,b,c,x;
printf("請輸入a,b,c,x的值\n");
scanf("%f%f%f%f",a,b,c,x);
printf("%f\n",f(a,b,c,x));
}
也可以把a,b,c改為定植 望采納 謝謝
#includestdio.h
#includestdlib.h
#define MaxSize 99
void translate(char str[],char exp[]) /*將算術(shù)表達(dá)式轉(zhuǎn)換成后綴表達(dá)式*/
{
struct
{
char data[MaxSize];
int top; /*top為棧頂*/
}op; /*定義一個含data和top的結(jié)構(gòu)體*/
char ch;
int i = 0,t = 0;
op.top = -1;
ch = str[i]; /*將str的每一個數(shù)轉(zhuǎn)換成ch*/
i++;
while(ch != '\0') /*ch對應(yīng)不同的符號的時候?qū)?yīng)的轉(zhuǎn)換情況*/
{
switch(ch)
{
case '(': /*當(dāng)是(的時候,將此括號存入棧op*/
op.top++;op.data[op.top]=ch;
break;
case ')':
while(op.data[op.top] != '(') /*括號內(nèi)的轉(zhuǎn)換優(yōu)先級最高,故先提取表達(dá)式*/
{
exp[t]=op.data[op.top];
op.top--;
t++;
}
op.top--;
break;
case '+':
case '-':
while(op.top != -1op.data[op.top] != '(')
{
exp[t] = op.data[op.top];
op.top--;
t++;
}
op.top++; /*恢復(fù)可插入位置*/
op.data[op.top] = ch;
break;
case '*':
case '/':
while(op.top == '/'||op.top == '*') /*優(yōu)先級*/
{
exp[t] = op.data[op.top];
op.top--;
t++;
}
op.top++;
op.data[op.top] = ch;
break;
case ' ': /*忽略空格,排除誤操作*/
break;
default:
while(ch = '0'ch = '9')
{
exp[t] = ch;t++;
ch = str[i];i++;
}
i--;
exp[t] = '#'; /*分隔操作數(shù),為了美觀,也為了以后好分隔操作數(shù),呵呵*/
t++;
}
ch = str[i];
i++;
}
while(op.top != -1) /*得到剩下的部分*/
{
exp[t] = op.data[op.top];
t++;
op.top--;
}
exp[t] = '\0'; /*表達(dá)式結(jié)束*/
}
float cal_value(char exp[])
{
struct
{
float data[MaxSize];
int top;
}st; /*操作數(shù)棧*/
float d;
char ch;
int t = 0;
st.top = -1;
ch = exp[t];
t++;
while(ch != '\0')
{
switch(ch) /*運算主體*/
{
case '+':
st.data[st.top-1] = st.data[st.top-1]+st.data[st.top];
st.top--;
break;
case '-':
st.data[st.top-1] = st.data[st.top-1]-st.data[st.top];
st.top--;
break;
case '*':
st.data[st.top-1] = st.data[st.top-1]*st.data[st.top];
st.top--;
break;
case '/':
if(st.data[st.top] != 0)
st.data[st.top-1]=st.data[st.top-1]/st.data[st.top];
else
{
printf("\n\t除0是錯誤的");
}
st.top--;
break;
default:
d=0;
while(ch = '0'ch = '9') /*從后綴表達(dá)式中獲取操作數(shù),#作用在此體現(xiàn)*/
{
d = 10*d+ch-'0';
ch = exp[t];
t++;
}
st.top++;
st.data[st.top] = d;
}
ch = exp[t];
t++;
}
return st.data[st.top];
}
int main() /*可以提到前面去*/
{
char str[MaxSize],exp[MaxSize]; /*str為算術(shù)表達(dá)式,exps為后綴表達(dá)式*/
printf("請輸入一個求值表達(dá)式\n");
printf("表達(dá)式:");
gets(str); /*輸入一個算術(shù)表達(dá)式*/
printf("原表達(dá)式是:%s\n",str);
translate(str,exp); /*將算術(shù)表達(dá)式轉(zhuǎn)換成后追表達(dá)式*/
printf("后綴表達(dá)式:%s\n",exp);
printf("計算結(jié)果:%g\n",cal_value(exp));/*通過后綴表達(dá)式來求值*/
system("pause");
return 0;
}
abs(計算整型數(shù)的絕對值)
相關(guān)函數(shù) labs, fabs
表頭文件 #includestdlib.h
定義函數(shù) int abs (int j)
函數(shù)說明 abs()用來計算參數(shù)j的絕對值,然后將結(jié)果返回。
返回值 返回參數(shù)j的絕對值結(jié)果。
范例 #ingclude stdlib.h
main(){
int ansert;
answer = abs(-12);
printf("|-12| = %d\n", answer);
}
執(zhí)行 |-12| = 12
/*---------------------------------*/
exp(計算指數(shù))
相關(guān)函數(shù) log,log10,pow
表頭文件 #includemath.h
定義函數(shù) double exp(double x);
函數(shù)說明 exp()用來計算以e為底的x次方值,即ex值,然后將結(jié)果返回。
返回值 返回e的x次方計算結(jié)果。
附加說明 使用GCC編譯時請加入-lm。
范例 #includemath.h
main()
{
double answer;
answer = exp (10);
printf("e^10 =%f\n", answer);
}
執(zhí)行 e^10 = 22026.465795
/*-----------------------------------*/
sqrt(計算平方根值)
相關(guān)函數(shù) hypotq
表頭文件 #includemath.h
定義函數(shù) double sqrt(double x);
函數(shù)說明 sqrt()用來計算參數(shù)x的平方根,然后將結(jié)果返回。參數(shù)x必須為正數(shù)。
返回值 返回參數(shù)x的平方根值。
錯誤代碼 EDOM 參數(shù)x為負(fù)數(shù)。
附加說明 使用GCC編譯時請加入-lm。
范例 /* 計算200的平方根值*/
#includemath.h
main()
{
double root;
root = sqrt (200);
printf("answer is %f\n",root);
}
執(zhí)行 answer is 14.142136
/*--------------------------------*/
fabs(計算浮點型數(shù)的絕對值)
相關(guān)函數(shù):abs
表頭文件:#includemath.h
定義函數(shù):double fabs(double x);
函數(shù)說明:fabs()用來計算浮點型數(shù)x的絕對值,然后將結(jié)果返回。
返回值:返回參數(shù)x的絕對值計算結(jié)果
#include math.h
main()
{
double answer;
answer=fabs(-3.141592);
printf("|-3.141592|=%f\n",answer);
}
執(zhí)行結(jié)果
|-3.141592|=3.141592
int?fun(int?x?)
{
if(x0??x!=3)
return?x*x+x+6;
if((x=0??x10)??(x!=2)??(x!=3))
return??x*x?-?5*x+6;
return?x*x-x-1;
}
希望能幫到你,望采納!
分享標(biāo)題:c語言計算符號函數(shù)的值 c語言計算符號函數(shù)的值,用switch語句
文章路徑:http://chinadenli.net/article14/hipode.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、微信公眾號、網(wǎng)站改版、營銷型網(wǎng)站建設(shè)、云服務(wù)器、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)