1、C語言中要編寫sin函數(shù),實質上要利用sin的泰勒公式,然后根據(jù)泰勒公式,將其中的每一項進行分解,最后用循環(huán),累加計算出最終結果。
創(chuàng)新互聯(lián)建站是專業(yè)的鐵鋒網(wǎng)站建設公司,鐵鋒接單;提供成都網(wǎng)站設計、做網(wǎng)站、成都外貿網(wǎng)站建設公司,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行鐵鋒網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
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、? 關于上述程序的幾點說明:上述程序的計算結果精確到小數(shù)點后六位;上述程序運用了sin的泰勒展開式 sin x=x-x^3/3!+x^5/5! ...... ,程序中將sin泰勒公式中的每一項拆成了分子,分母以及每一項前的符號這三項,以便于每一項的累加。
#include stdio.h
int main()
{
int a;
scanf("%d",a);
printf("%d",a0?a:-a);
return 0;
}
#include stdio.h
int main()
{
int a;
scanf("%d",a);
if(a0)
a=-a;
if(a=0)
a=a;
printf("%d",a);
return 0;
}
#include stdio.h
int main()
{
int a;
scanf("%d",a);
if(a0)
a=-a;
else
a=a;
printf("%d",a);
return 0;
}
聲明一個和記錄變量s,聲明一個階乘記錄變量t,再聲明一個計數(shù)變量n。用一個for循環(huán),計數(shù)變量n從1開始步長為1增值至10為止;t初值設置為1,始終記錄它與n的當前值的乘積,就得到了n的當前值的階乘n!;s初值置0,累加每個n當前值時的階乘t,就完成了題設要求。代碼如下:
#include "stdio.h"int main(int argc,char *argv[]){ int s,n,t;
for(s=0,t=n=1;n11;s+=t*=n++);//用t記錄每個n的當前值的階乘并累加到s
printf("1!+2!+3!+...+10! = %d\n",s); return 0;}
擴展資料:
C語言編寫函數(shù)技巧:
1、原則上盡量少使用全局變量,因為全局變量的生命周期太長,容易出錯,也會長時間占用空間.各個源文件負責本身文件的全局變量,同時提供一對對外函數(shù),方便其它函數(shù)使用該函數(shù)來訪問變量。
比如:niSet_ValueName(…);niGet_ValueName(…);不要直接讀寫全局變量,尤其是在多線程編程時,必須使用這種方式,并且對讀寫操作加鎖。
2、參數(shù)命名要恰當,順序要合理。
例如編寫字符串拷貝函數(shù)str_copy,它有兩個參數(shù)。如果把參數(shù)名字起為str1 和str2,例如
void str_copy (char *str1, char *str2);
那么很難搞清楚究竟是把str1 拷貝到str2 中,還是剛好倒過來。
可以把參數(shù)名字起得更有意義,如叫strSource 和strDestination。這樣從名字上就可以看出應該把strSource 拷貝到strDestination。
還有一個問題,這兩個參數(shù)那一個該在前那一個該在后?參數(shù)的順序要遵循程序員的習慣。一般地,應將目的參數(shù)放在前面,源參數(shù)放在后面。如果將函數(shù)聲明為:
void str_copy (char *strSource, char *strDestination);
別人在使用時可能會不假思索地寫成如下形式:
char str[20];
str_copy (str, “Hello World”); 參數(shù)順序顛倒
3、如果參數(shù)是指針,且僅作輸入?yún)?shù)用,則應在類型前加const,以防止該指針在函數(shù)體內被意外修改。例如:
void str_copy (char *strDestination,const char *strSource);
4、不要省略返回值的類型,如果函數(shù)沒有返回值,那么應聲明為void 類型。
如果沒有返回值,編譯器則默認為函數(shù)的返回值是int類型的。
5、在函數(shù)體的“入口處”,對參數(shù)的有效性進行檢查。尤其是指針參數(shù),盡量使用assert宏做入口校驗,而不使用if語句校驗。
#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改為定植 望采納 謝謝