c語言程式求二維座標中兩圓的面積及是否相交

2022-11-05 18:01:35 字數 2753 閱讀 1584

1樓:金色潛鳥

經典題。網上答案很多,給你抄一個:

假設半徑小的圓為c1,半徑大的圓為c2。

c1的半徑r1,圓心座標(x1,y1)。c2的半徑r2,圓心座標(x2,y2)。

d為兩圓圓心連線的長度。

相交面積為s

d=sqrt((x1-x2)^2+(y1-y2)^2)

(1)如果r1+r2<=d

那麼兩圓相離,相交面積s=0

(2)如果r2-r1>=d

那麼半徑小的圓內含半徑大的圓,那麼相交面積為小圓的面積s=pi*r1*r1

(3)既非(1)也非(2)

在圖上畫兩個相交圓,結合影象看。

那麼兩圓相交,連線小圓的圓心與兩個圓的交點,連線大圓的圓心和兩個圓的交點。

可以發現形成的圖形被兩個圓心的連線平分成2個全等三角形。

由小圓圓心和交點所連兩條線(長度為半徑)以及在大圓之內的弧所形成的扇形為s1

由大圓圓心和交點所連兩條線(長度為半徑)以及在小圓之內的弧所形成的扇形為s2

由小圓圓心和交點所連兩條線以及由大圓圓心和交點所連兩條線所形成的四邊形的面積為s3

可見相交面積s=s1+s2-s3

要求出扇形的面積,要知道扇形的圓心角。

小圓包含的扇形的圓心角為2*a1(考慮一個三角形)

a1=acos((r1^2+d^2-r2^2)/(2.0*r1*d)) 餘弦定理

a2=acos((r2^2+d^2-r1^2)/(2.0*r2*d))

s1=pi*r1*r1*2*a1/(2*pi)=a1*r1*r1

同理 s2=a2*r2*r2

s3為一個三角形面積的2倍

s3=2*r1*d*sin(a1)/2=r1*d*sin(a1)

則s=a1*r1*r1+a2*r2*r2-r1*d*sin(a1)

**:#define pi acos(-1.0)

#define maxn 10

struct node c[maxn];

double area(int i,double r1,int j,double r2)//r1取小

if(r1+r2<=d)

return 0;//相離

else if(r2-r1>=d)

return pi*r1*r1;//內含

else //相交

}*****==

如果只有2個圓,前面可用:

#define maxn 2

main()

2樓:單樂雙雪漠

設這個反比例函式的表示式為y=kx

,∵p1(x1,y1),p2(x2,y2)是同一個反比例函式圖象上的兩點,

∴x1?y1=x2?y2=k,∴1

y1=x1k

,1y2=

x2k,∵

1y2=1

y1+12

,∴x2k

=x1k+

12,∴

1k(x2-x1)=12

,∵x2=x1+2,∴1

k×2=12

,∴k=4,

∴這個反比例函式的表示式為y=4x

.故答案為:y=4x.

c語言程式設計問題:題目計算圓的面積。

3樓:咖啡巷

你的派值是double型的,而s值是float型的,這樣會使值失去一定的精度,還有main函式需要返回值的,可以寫return 0;

4樓:匿名使用者

你這個怎麼看都是錯的

第一,主函式是這樣定義的嗎

第二,這裡乘法運算需要把float型轉化為double型最後,沒有返還函式,了return 0;

改正如下:

#include

#define pi 3.14159

int main()

c語言程式設計,求圓的面積,用兩個函式

5樓:謝應宸

#include

#include

#define pi 3.1415927

double area(double r)int main(void)

c語言程式設計如何實現「計算圓的面積」?

6樓:新學it課堂

案例:輸入圓的半徑,計算圓的面積。

c語言程式設計 已知圓的半徑為5,求圓的面積和周長。

7樓:time哥特式

#include

void main()

或者你可以直接寫

#include

void main()

c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。

8樓:匿名使用者

#include

#define pi 3.14159

void main()

執行結dao果專截圖:屬

c語言求二維陣列的和的寫法問題,c語言求二維陣列的和的一個寫法問題

這樣寫,格式有點小錯誤。以下幫你加了幾個中括號,希望採納!note your choice is c ide include stdio.h void main for i 0 i 2 i for j 0 j 2 j if a i j max max a i j printf d,d,d n sum...

c語言中二維陣列的定義問題C語言中二維陣列的定義問題

正確寫法如下 char fd jgf1 maxitemlen 1 說明 把null去掉 1.二維陣列的第一個維度預設是 舉個例子 int tar 2 因為大括號中有4個元素,而且第二個維度是2,所以就可以計算出來第一維度是2.所以是可以預設的。2.你的這個例子中,第一維預設的應該是 7 8 1 ma...

c語言for迴圈與二維陣列的問題

首先你所給的程式就存在錯誤,這是我幫你修改後的程式 include stdio.h int main i,k,t for i 0 i 3 i for k i i k 4 k if a i i for i 0 i 4 i printf d,a 0 i return 0 執行後的結果是6,4,3,2.第...