哈哈,還記得我當(dāng)年也有類似的問題,還特意去借了本初三的數(shù)學(xué)書來(lái)學(xué)函數(shù)。其實(shí)C語(yǔ)言的函數(shù)某種程度上包括了數(shù)學(xué)上的函數(shù),而對(duì)C語(yǔ)言本身來(lái)講,數(shù)學(xué)函數(shù)并不是必需的。
專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)銅仁免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
估計(jì)你在初學(xué)C語(yǔ)言時(shí)會(huì)對(duì)函數(shù)的概念及如何使用存在諸多困惑,沒關(guān)系,先照著書上的例子來(lái)寫程序,等程序?qū)懙枚嗔俗匀粫?huì)對(duì)函數(shù)有更清楚的認(rèn)識(shí)的。
#include stdio.h
void main()
{
float a,b,c,s;
printf(“請(qǐng)輸入上底下底高:”);
scanf("%f,%f,%f",a,b,c);
s=(a+b)*c/2;
printf("%f\n",s);
}
擴(kuò)展資料:
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
二十世紀(jì)八十年代,為了避免各開發(fā)廠商用的C語(yǔ)言語(yǔ)法產(chǎn)生差異,由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語(yǔ)言制定了一套完整的美國(guó)國(guó)家標(biāo)準(zhǔn)語(yǔ)法,稱為ANSI C,作為C語(yǔ)言最初的標(biāo)準(zhǔn)。目前2011年12月8日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電工委員會(huì)(IEC)發(fā)布的C11標(biāo)準(zhǔn)是C語(yǔ)言的第三個(gè)官方標(biāo)準(zhǔn),也是C語(yǔ)言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。
你的代碼中一些問題:
① 圖片第四行少寫了分號(hào),并且該函數(shù)聲明 double area(double x,double y,double z); 建議寫在最開頭。當(dāng)然,寫在主函數(shù)里也可以,這是小問題。
② double類型對(duì)應(yīng)的轉(zhuǎn)換說明是 %lf。錯(cuò)誤的轉(zhuǎn)換說明會(huì)導(dǎo)致輸出錯(cuò)誤。
③ 主函數(shù)中已經(jīng)利用 s=0.5*(a+b)*c; 求出了梯形的面積,那么為什么還要?jiǎng)?chuàng)建area()函數(shù)呢?況且這個(gè)函數(shù)還沒用上。s和area()函數(shù)這倆用一個(gè)就行。
附上代碼:
① 使用area()函數(shù)
#include?stdio.h
double?area(double?x,double?y,double?z);
int?main(void)
{
double?a,b,c,s;
printf("Please?enter?a,b?and?c:");
scanf("%lf,%lf,%lf",a,b,c);
s=area(a,b,c);
printf("s=%lf\n",s);
return?0;
}
double?area(double?x,double?y,double?z)
{
return?0.5*(x+y)*z;
}
② 在主函數(shù)中直接求
#include?stdio.h
int?main(void)
{
double?a,b,c,s;
printf("Please?enter?a,b?and?c:");
scanf("%lf,%lf,%lf",a,b,c);
s=0.5*(a+b)*c;
printf("s=%lf\n",s);
return?0;
}
現(xiàn)在已經(jīng)改好了,請(qǐng)看更改的地方:
#include stdio.h
void main(void)
{
float a,b,h,area;/*應(yīng)該聲明為float*/
float get_area(float,float,float);/*函數(shù)的正確聲明法,還有形參和實(shí)參不能同名*/
printf("請(qǐng)輸入梯形的上底:\n");
scanf("%f",a);
printf("請(qǐng)輸入梯形的下底:\n");
scanf("%f",b);
printf("請(qǐng)輸入梯形的高:\n");
scanf("%f",h);/*有改動(dòng) */
area=get_area(a,b,h);
printf("梯形的面積為%f\n",area);
}
float get_area(float a_x,float b_x,float h_x)
{
return 1/2.0*(a_x+b_x)*h_x;/*把2改成2.0,因?yàn)?/2=0,1/2.0=0.5 ,這是C的想法*/
}
直接根據(jù)如下梯形面積公式來(lái)進(jìn)行程序的設(shè)計(jì):
S=(a+b)*h/2,其中,S表示梯形面積;a和b分別表示梯形的上底和下底,h表示梯形的高。
具體實(shí)現(xiàn)方法可以參考如下程序:
#includestdio.h
void?main()
{
double?a,?b,?h;??//?定義梯形的上底、下底和高
printf("請(qǐng)輸入梯形的上底、下底和高:");
scanf("%lf%lf%lf",?a,?b,?h);??//?接收用戶輸入的梯形的上底、下底和高
printf("梯形面積為:%lf",?(a+b)*h/2);?//?根據(jù)梯形面積公式計(jì)算并輸出梯形面積
}