這三個函數都有錯誤:
先看妳的程序,好像妳想在各種函數中使用變量S作為全局變量,但是變量沒有定義。(那個主函數裏的s是大寫的,和這個沒關系。)
第二,變量名與函數名壹致。如果S是壹個全局變量,那麽它與函數s(float,float,float)的命名是重復的。編譯器無法確定同名是函數還是變量,無法編譯。同時,在函數區(float,float,float)中,有壹個變量區,用來尋找面積。
第三,主函數中的語法和邏輯錯誤。
程序的初衷是在計算面積之前判斷三邊是否滿足形成三角形的條件。但是:
1.事實上,這裏應該使用if語句,而不是循環;
2.即使采用循環,在邏輯上也是錯誤的:根據妳的程序,只要滿足條件(兩邊之和大於第三邊),就會繼續循環,除非不符合的壹方退出,否則這個程序無法計算出正確的結果。
雖然下面的改動盡量按照原程序進行,但壹般來說,不建議使用全局變量,因為用多了程序的可移植性會受到很大影響。
綜上所述,程序及以下改動(在保證正確性的情況下盡量不要改動原程序):
# include & ltstdio.h & gt
# include & ltmath.h & gt
float s;
void main()
{浮動區(浮動a,浮動b,浮動c);
浮點a,b,c,S;
scanf("%f %f %f ",& amp壹,& ampb & amp;c);
if(a+b & gt;c & amp& ampa+c & gt;b);
s =面積(a,b,c);}
}
浮動區域(浮動a、浮動b、浮動c)
{
浮點ss(浮點a、浮點b、浮點c);
浮動區;
s=ss(a,b,c);
area = sqrt(s *(s-a)*(s-b)*(s-c));
printf("area=%f ",area);
返回區域;
}
浮子ss(浮子a、浮子b、浮子c)
{
s =(a+b+c)* 0.5;
返回s;
}