1. 程式人生 > >linux c下求已知三條邊的三角形的面積

linux c下求已知三條邊的三角形的面積

首先使用的演算法有兩種:

1.用餘弦定理求出一個角的餘弦,然後求出正弦角A,然後用s=1/2*(a*b*sinA)來求面積;

2.直接用海倫公式,p=(a+b+c)/2,s=sqrt(p*(p-a)*(p-b)*(p-c));

然後寫完的程式碼如下:

#include<stdio.h>
#include<math.h>
void main()
{
        float p=0,a=0,b=0,c=0,ss=0,s=0;
        printf("請輸入三條邊:");
        scanf("%f %f %f",&a,&b,&c);
        p=(a+b+c)/2;
        ss=p*(p-a)*(p-b)*(p-c);
        s=sqrt(ss);
        printf("三角形的面積是%f\n",s);
}
然後編譯的時候注意了,要使用gcc -o *.o *.c -lm

gcc編譯器不能直接連線到libm.so這個數學庫,而且到/usr/include的math.h檔案裡面找不到sqrt這個函式的宣告,g++可以直接編譯(還不知道為什麼),常用的庫連結還有 posix執行緒,要用-lpthread。