當前位置:首頁 » 編程語言 » c語言線段

c語言線段

發布時間: 2022-07-15 10:55:04

c語言編程題 在X軸上給你一些線段,問被這些線段覆蓋的區間長。

#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#defineN10000
typedefstruct{
inthead;
intnail;
}NODE;
NODEa[N];
intn;
intcmp(constvoid*a,constvoid*b){
return((NODE*)a)->head-((NODE*)b)->head;
}
intmain()
{
scanf("%d",&n);
while(n!=0){
inti;
for(i=0;i<n;i++)
scanf("%d%d",&a[i].head,&a[i].nail);
qsort(a,n,sizeof(a[0]),cmp);
for(i=0;i<n-1;i++){
while(a[i].nail>a[i+1].head){
if(a[i].nail>a[i+1].nail){
a[i+1].head=a[i].head,a[i+1].nail=a[i].nail;
//a[i].nail=a[i].head;
}else{
a[i+1].head=a[i].head;
}
a[i].nail=a[i].head;
i++;
}
}
intsum=0;
for(i=0;i<n;i++)sum+=a[i].nail-a[i].head;
printf("%d ",sum);
scanf("%d",&n);
}
return0;
}

這樣就可以了

⑵ 用C語言二維數組怎麼寫連接的幾個線段及其顏色函數

在形參是數組的情況下,只要是數組,無論維數,實際上在調用函數時,傳給函數的將是一個數組的首地址,以及維數等相關信息
也就是說,在函數執行過程中,並不會新開辟內存空間,而是形參實參共用同一段內存空間
所以,在這種情況下,函數內部對數組進行修改,其值會返回給實參
你的例子中調用部分有問題,不能這樣
shuru(a[10][2])
而是
shuru(a)
因為a[10][2]代表數組a中的一個元素,而且是越界的
而a才是數組名

⑶ 怎樣用c語言編出能輸出一條線段的程序,還有不知下面的程序有何錯誤。

#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
intmain(void)//void即可
{
initgraph(640,480);
setcolor(RED);//設置前景色
line(50,250,250,250);
getch();
closegraph();
return0;
}

⑷ 用c語言 求點到線段垂線的交點,怎麼求

設線段兩點是 (x1,y1)(x2,y2),另外一個點是(x3,y3),那麼他的方向向量就是 (a,b)=(x2-x1,y2-y1),那麼他的垂線段的方向向量就是 (-b,a); 那麼垂線的方程l就是就是 (x-x3)/(-b)=(y-y3)/a,l上的點就是x=t*(-b)+x3,y=a*t+y3,把(x,y)代入線段方程就可以求出t;
#include<stdio.h>

struct point
{
double x,y;
point(double _x,double _y):
x(_x),y(_y){}
};
struct Line
{
double x,y;
point a;
Line(double _x,double _y,point _a):
x(_x),y(_y),a(_a){}

};

int main()
{
double x,y;
printf("輸入線段兩點\n");
scanf("%lf%lf",&x,&y);point a=point(x,y);
scanf("%lf%lf",&x,&y);point b=point(x,y);
printf("輸入線段外一點\n");
scanf("%lf%lf",&x,&y);point c=point(x,y);

Line l=Line(a.x-b.x,a.y-b.y,a);
Line l1=Line(b.y-a.y,a.x-b.x,c);

//ansx=(b.y-a.y)*t+c.x;ansy=(a.x-b.x)*t+c.y

//(ansx-a.x)/(a.x-b.x)=(ansy-a.y)/(a.y-b.y)

double t=((c.y-a.y)*(a.x-b.x)-(c.x-a.x)*(a.y-b.y))/((a.y-b.y)*(b.y-a.y)-(a.x-b.x)*(a.x-b.x));
if(t>1||t<0) puts("不存在");
else
{
double ansx=(b.y-a.y)*t+c.x;
double ansy=(a.x-b.x)*t+c.y;

printf("%lf %lf\n",ansx,ansy);
}
}

⑸ 用C語言製作一個求兩條線段交點的程序

//先判斷兩條線段是否不平行(最好同時判斷是否有交點並且不平行,因為浮//點運算不精確),然後計算兩條線段的交點。以下是C語言代碼:
#include<stdio.h>
#include<math.h>
#define eps 1e-8
#define zero(x) (((x)>0?(x):-(x))<eps)
struct point{double x,y;};

//計算交叉乘積(P1-P0)x(P2-P0)
double xmult(point p1,point p2,point p0){
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}

//判點是否在線段上,包括端點
int dot_online_in(point p,point l1,point l2){
return zero(xmult(p,l1,l2))&&(l1.x-p.x)*(l2.x-p.x)<eps&&(l1.y-p.y)*(l2.y-p.y)<eps;
}

//判兩點在線段同側,點在線段上返回0
int same_side(point p1,point p2,point l1,point l2){
return xmult(l1,p1,l2)*xmult(l1,p2,l2)>eps;
}

//判兩直線平行
int parallel(point u1,point u2,point v1,point v2){
return zero((u1.x-u2.x)*(v1.y-v2.y)-(v1.x-v2.x)*(u1.y-u2.y));
}

//判三點共線
int dots_inline(point p1,point p2,point p3){
return zero(xmult(p1,p2,p3));
}

//判兩線段相交,包括端點和部分重合
int intersect_in(point u1,point u2,point v1,point v2){
if (!dots_inline(u1,u2,v1)||!dots_inline(u1,u2,v2))
return !same_side(u1,u2,v1,v2)&&!same_side(v1,v2,u1,u2);
return dot_online_in(u1,v1,v2)||dot_online_in(u2,v1,v2)||dot_online_in(v1,u1,u2)||dot_online_in(v2,u1,u2);
}

//計算兩線段交點,請判線段是否相交(同時還是要判斷是否平行!)
point intersection(point u1,point u2,point v1,point v2){
point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))
/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t;
return ret;
}

int main(void)
{
point u1,u2,v1,v2,ans;
printf("請輸入線段1的兩個端點:\n");
scanf("%lf%lf%lf%lf",&u1.x,&u1.y,&u2.x,&u2.y);
printf("請輸入線段2的兩個端點:\n");
scanf("%lf%lf%lf%lf",&v1.x,&v1.y,&v2.x,&v2.y);
if (parallel(u1,u2,v1,v2)||!intersect_in(u1,u2,v1,v2)){
printf("無交點!\n");
}
else{
ans=intersection(u1,u2,v1,v2);
printf("交點為:(%lf,%lf)",ans.x,ans.y);
}
return 0;
}

⑹ C語言中如何刪除線段(清屏的不算,因為還有其他東西)

我一般都是這樣實現的,就是把你想要刪除的線段,在原位置再畫一次,只不過把顏色換成和背景色一樣的顏色,這樣看起來就像刪除了一樣

熱點內容
sqlbrowser服務 發布:2025-02-02 01:32:14 瀏覽:729
jeecg源碼下載 發布:2025-02-02 01:08:47 瀏覽:365
多台電腦能共用一個伺服器嗎 發布:2025-02-02 01:08:44 瀏覽:26
oppo雲存儲空間怎麼清理 發布:2025-02-02 00:59:31 瀏覽:263
項目編譯啥意思 發布:2025-02-02 00:25:13 瀏覽:223
逐鹿中原怎樣做掛機腳本 發布:2025-02-02 00:23:39 瀏覽:28
安卓系統跟蹤在哪裡 發布:2025-02-02 00:23:38 瀏覽:899
安卓uc瀏覽器怎麼安裝油猴 發布:2025-02-02 00:23:38 瀏覽:299
中商情報網資料庫 發布:2025-02-02 00:09:26 瀏覽:533
python獲取目錄下所有文件名 發布:2025-02-01 23:47:54 瀏覽:896