歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOCX文檔下載  

北京理工大學(xué)數(shù)據(jù)結(jié)構(gòu)編程練習(xí)答案

  • 資源ID:10471564       資源大?。?span id="ladd3qx" class="font-tahoma">135.47KB        全文頁數(shù):95頁
  • 資源格式: DOCX        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

北京理工大學(xué)數(shù)據(jù)結(jié)構(gòu)編程練習(xí)答案

1.一元多項(xiàng)式相加(10分)成績(jī): 10 / 折扣: 0.8題目說明:編寫一元多項(xiàng)式加法運(yùn)算程序。要求用線性鏈表存儲(chǔ)一元多項(xiàng)式(參照課本)。該程序有以下幾個(gè)功能:1. 多項(xiàng)式求和輸入:輸入三個(gè)多項(xiàng)式,建立三個(gè)多項(xiàng)式鏈表Pa、Pb、Pc (提示:調(diào)用CreatePolyn(polynomial &P,int m)。輸出:顯示三個(gè)輸入多項(xiàng)式Pa、Pb、Pc、和多項(xiàng)式Pa+Pb、多項(xiàng)式Pa+Pb+Pc (提示:調(diào)用AddPolyn(polynomial &Pa, polynomial Pb), 調(diào)用PrintPolyn(polynomial P)。0. 退出輸入:根據(jù)所選功能的不同,輸入格式要求如下所示(第一個(gè)數(shù)據(jù)是功能選擇編號(hào),參見測(cè)試用例): 1 多項(xiàng)式A包含的項(xiàng)數(shù),以指數(shù)遞增的順序輸入多項(xiàng)式A各項(xiàng)的系數(shù)(整數(shù))、指數(shù)(整數(shù))多項(xiàng)式B包含的項(xiàng)數(shù),以指數(shù)遞增的順序輸入多項(xiàng)式B各項(xiàng)的系數(shù)(整數(shù))、指數(shù)(整數(shù))多項(xiàng)式C包含的項(xiàng)數(shù),以指數(shù)遞增的順序輸入多項(xiàng)式C各項(xiàng)的系數(shù)(整數(shù))、指數(shù)(整數(shù)) 0 操作終止,退出。 輸出:對(duì)應(yīng)一組輸入,輸出一次操作的結(jié)果(參見測(cè)試用例)。 1 多項(xiàng)式輸出格式:以指數(shù)遞增的順序輸出: <系數(shù),指數(shù)>,<系數(shù),指數(shù)>,<系數(shù),指數(shù)>,參見測(cè)試用例。零多項(xiàng)式的輸出格式為<0,0> 0 無輸出 1.#include<iostream>#include<stdlib.h>using std:cin;using std:cout;using std:endl;struct dateint a;int b;struct date* pnext;typedef struct date DATE;typedef struct date* PDATE;void output(PDATE p)int f=0;p=p->pnext;while(p!=NULL)if(p->a!=0)f=1;cout<<"<"<<p->a<<","<<p->b<<">"if(p->pnext=NULL)cout<<endl;elsecout<<","p=p->pnext;if(f=0)cout<<"<0,0>"<<endl;void add(PDATE a,PDATE b,PDATE c)PDATE p1,p2,p3;p1=a;p2=b;p3=c;if(p1!=NULL) p1=p1->pnext;/skip headif(p2!=NULL) p2=p2->pnext;while(p1!=NULL)&&(p2!=NULL)if(p1->b>p2->b)p3->pnext=(PDATE)malloc(sizeof(DATE);p3=p3->pnext;p3->a=p2->a;p3->b=p2->b;p3->pnext=NULL;p2=p2->pnext;else if(p1->b<p2->b)p3->pnext=(PDATE)malloc(sizeof(DATE);p3=p3->pnext;p3->a=p1->a;p3->b=p1->b;p3->pnext=NULL;p1=p1->pnext;elsep3->pnext=(PDATE)malloc(sizeof(DATE);p3=p3->pnext;p3->a=p1->a+p2->a;p3->b=p1->b;p3->pnext=NULL;p1=p1->pnext;p2=p2->pnext;/end whileif(p1=NULL)p3->pnext=p2;if(p2=NULL)p3->pnext=p1;int main()int flag;int n;PDATE P6=NULL;PDATE p=NULL;for(int i=0;i<6;i+)Pi=(PDATE)malloc(sizeof(DATE);Pi->a=0;Pi->b=0;Pi->pnext=NULL;cin>>flag;if(flag=1)for(int i=1;i<4;i+)p=Pi;cin>>n;while(n-!=0)p->pnext=(PDATE)malloc(sizeof(DATE);p=p->pnext;cin>>p->a>>p->b;p->pnext=NULL;output(Pi);add(P1,P2,P4);output(P4);add(P4,P3,P5);output(P5);0 約瑟夫問題(10分)成績(jī): 10 / 折扣: 0.80 約瑟夫問題成績(jī)10分 折扣0.8 (本題要求用循環(huán)鏈表實(shí)現(xiàn)) 0 ,1, 2, 3題,只能選做三題.約瑟夫問題是一個(gè)經(jīng)典的問題。已知n個(gè)人(不妨分別以編號(hào)1,2,3,n 代表)圍坐在一張圓桌周圍,從編號(hào)為 k 的人開始,從1開始順時(shí)針報(bào)數(shù)1, 2, 3, .,順時(shí)針數(shù)到m 的那個(gè)人,出列并輸出。然后從出列的下一個(gè)人開始,從1開始繼續(xù)順時(shí)針報(bào)數(shù),數(shù)到m的那個(gè)人,出列并輸出,依此重復(fù)下去,直到圓桌周圍的人全部出列。 輸入:n,k,m 輸出:按照出列的順序依次輸出出列人的編號(hào),編號(hào)中間相隔一個(gè)空格,每10個(gè)編號(hào)為一行。 非法輸入的對(duì)應(yīng)輸出如下a) 輸入:n、k、m任一個(gè)小于1輸出:n,m,k must bigger than 0. b) 輸入:k>n輸出:k should not bigger than n.例輸入9,3,2輸出4 6 8 1 3 7 2 9 5#include<stdio.h>#include<stdlib.h>#include<math.h>struct dateint a;struct date* next;typedef struct date DATE;typedef struct date* PDATE;PDATE setnew(PDATE p,int a)PDATE pt;pt=(PDATE) malloc (sizeof(DATE);pt->a=a;pt->next=p->next;p->next=pt;return pt;int count;PDATE del(PDATE p0)if(!count)printf("n");count=10;printf("%d ",p0->a);PDATE p=p0->next;p0->a=p->a;p0->next=p->next;free(p);count-;return p0;int main()count=10;int n=0,k=0,m=0;scanf("%d,%d,%d",&n,&m,&k);if(!(n>0&&m>0&&k>0)printf("n,m,k must bigger than 0.n");else if(m>n)printf("k should not bigger than n.n");elsePDATE p=NULL;PDATE head=(DATE *)malloc(sizeof(DATE);head->next=head;head->a=1;p=head;for(int i=2;i<=n;i+)p=setnew(p,i);while(p->a!=m)p=p->next;while(n)/int temp=k;int temp=k%n+n;while(-temp)p=p->next;del(p);n-;printf("n");2. 綜教樓后的那個(gè)坑成績(jī): 10 / 折扣: 0.8描述在 LIT 綜教樓后有一個(gè)深坑,關(guān)于這個(gè)坑的來歷,有很多種不同的說法。其中一種說法是,在很多年以前,這個(gè)坑就已經(jīng)在那里了。這種說法也被大多數(shù)人認(rèn)可,這是因?yàn)樵摽佑幸环N特別的結(jié)構(gòu),想要人工建造是有相當(dāng)困難的。從橫截面圖來看,坑底成階梯狀,由從左至右的 1.N 個(gè)的平面構(gòu)成(其中 1 N 100,000),如圖: : : 8 7 6 5 4 <- 高度 3 2 1平面 1 23 每個(gè)平面 i 可以用兩個(gè)數(shù)字來描述,即它的寬度 Wi 和高度 Hi,其中 1 Wi 1,000、1 Hi 1,000,000,而這個(gè)坑最特別的地方在于坑底每個(gè)平面的高度都是不同的。每到夏天,雨水會(huì)把坑填滿,而在其它的季節(jié),則需要通過人工灌水的方式把坑填滿。灌水點(diǎn)設(shè)在坑底位置最低的那個(gè)平面,每分鐘灌水量為一個(gè)單位(即高度和寬度均為 1)。隨著水位的增長(zhǎng),水自然會(huì)向其它平面擴(kuò)散,當(dāng)水將某平面覆蓋且水高達(dá)到一個(gè)單位時(shí),就認(rèn)為該平面被水覆蓋了。請(qǐng)你計(jì)算每個(gè)平面被水覆蓋的時(shí)間。 灌水 水滿后自動(dòng)擴(kuò)散 | | * | * * | * * * * V * * V * * * * * * . * * * * * * : * * * * * * : * * * * * * * * * * * * * * * * * * * *4 分鐘后 26 分鐘后 50 分鐘后平面 1 被水覆蓋 平面 3 被水覆蓋平面 2 被水覆蓋輸入輸入的第一行是一個(gè)整數(shù) N,表示平面的數(shù)量。從第二行開始的 N 行上分別有兩個(gè)整數(shù),分別表示平面的寬度和高度。輸出輸出每個(gè)平面被水覆蓋的時(shí)間。#include<stdlib.h>#include<stdio.h>struct datelong long * timedate;long h;int w;struct date* pl;struct date* pr;typedef struct date DATE;typedef struct date* PDATE;PDATE setnew(PDATE p0,int w,long h,long long * num)/p0為左鄰PDATE p=(PDATE) malloc(sizeof(DATE);p->timedate=num;p->pl=p0;p->pr=NULL;p0->pr=p;p->h=h;p->w=w;return p;void output(long long* p,long n)while(n-)printf("%lldn",*(+p);int main()long long myclock;long n;int w;long h;PDATE p=NULL,pt=NULL;/set leftpPDATE left=(PDATE) malloc(sizeof(DATE);left->timedate=NULL;left->pl=NULL;left->pr=NULL;left->h=1000000;left->w=0;p=left;pt=left;scanf("%d",&n);long long* timedate=new long longn+1;for(long i=0;i<n;i+)/cin>>w>>h;scanf("%d%d",&w,&h);p=setnew(p,w,h,timedate+i+1);if(pt->h>h)pt=p;PDATE right=setnew(p,0,1000000,NULL);p=pt;myclock=0;while(p->pl->h!=p->pr->h)*(p->timedate)=myclock+p->w;/計(jì)算時(shí)間并刪除合并if(p->pl->h>p->pr->h) myclock+=(p->pr->h-p->h)*p->w;p->pr->w+=p->w;p->pl->pr=p->pr;p->pr->pl=p->pl;pt=p;p=p->pr;delete pt;else if(p->pl->h<p->pr->h)myclock+=(p->pl->h-p->h)*p->w;p->pl->w+=p->w;p->pl->pr=p->pr;p->pr->pl=p->pl;pt=p;p=p->pl;delete pt;/移至下一進(jìn)水點(diǎn)if(p->pl->h>p->h&&p->pr->h>p->h)continue;else if(p->pl->h<p->pr->h)/左移while(p->h>p->pl->h)p=p->pl;else /右移while(p->h>p->pr->h)p=p->pr;myclock+=p->w;*(p->timedate)=myclock;output(timedate,n);3. 單詞壓縮存儲(chǔ)(10分)成績(jī): 10 / 折扣: 0.8如果采用單鏈表保存單詞,可采用如下辦法壓縮存儲(chǔ)空間。如果兩個(gè)單詞的后綴相同,則可以用同一個(gè)存儲(chǔ)空間保存相同的后綴。例如,原來分別采用單鏈表保存的單詞Str1“abcdef”和單詞Str2“dbdef”,經(jīng)過壓縮后的存儲(chǔ)形式如下。請(qǐng)?jiān)O(shè)計(jì)一個(gè)高效的算法完成兩個(gè)單鏈表的壓縮存儲(chǔ),并估計(jì)你所設(shè)計(jì)算法的時(shí)間復(fù)雜度。要求:閱讀預(yù)設(shè)代碼,編寫函數(shù)SNODE * ziplist( SNODE * head1, SNODE * head2 )ziplist的功能是:在兩個(gè)串鏈表中,查找公共后綴,若有公共后綴,則壓縮 并返回指向公共后綴的指針;否則返回NULL預(yù)設(shè)代碼前置代碼view plaincopy to clipboardprint?1. /*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/2. 3. #include<stdio.h> 4. #include<stdlib.h> 5. 6. typedefstructsdata 7. chardata; 8. structsdata*next; 9. SNODE; 10. 11. voidsetlink(SNODE*,char*),outlink(SNODE*); 12. intlistlen(SNODE*); 13. SNODE*ziplist(SNODE*,SNODE*); 14. SNODE*findlist(SNODE*,SNODE*); 15. 16. intmain() 17. 18. SNODE*head1,*head2,*head; 19. charstr1100,str2100; 20. 21. gets(str1); 22. gets(str2); 23. 24. head1=(SNODE*)malloc(sizeof(SNODE); 25. head2=(SNODE*)malloc(sizeof(SNODE); 26. head=(SNODE*)malloc(sizeof(SNODE); 27. head->next=head1->next=head2->next=NULL; 28. 29. setlink(head1,str1); 30. setlink(head2,str2); 31. 32. head->next=ziplist(head1,head2); 33. 34. head->next=findlist(head1,head2); 35. outlink(head); 36. return0; 37. 38. 39. voidsetlink(SNODE*head,char*str) 40. 41. SNODE*p; 42. 43. while(*str!=0) 44. p=(SNODE*)malloc(sizeof(SNODE); 45. p->data=*str; 46. p->next=NULL; 47. str+; 48. head->next=p; 49. head=p; 50. 51. return; 52. 53. 54. voidoutlink(SNODE*head) 55. 56. while(head->next!=NULL) 57. 58. printf("%c",head->next->data); 59. head=head->next; 60. 61. printf("n"); 62. return; 63. 64. 65. intlistlen(SNODE*head) 66. 67. intlen=0; 68. while(head->next!=NULL) 69. 70. len+; 71. head=head->next; 72. 73. returnlen; 74. 75. 76. SNODE*findlist(SNODE*head1,SNODE*head2) 77. 78. intm,n; 79. SNODE*p1=head1,*p2=head2; 80. 81. m=listlen(head1); 82. n=listlen(head2); 83. 84. while(m>n) 85. p1=p1->next; 86. m-; 87. 88. while(m<n) 89. p2=p2->next; 90. n-; 91. 92. 93. while(p1->next!=NULL&&p1->next!=p2->next) 94. 95. p1=p1->next; 96. p2=p2->next; 97. 98. returnp1->next; 99. 100. 101. /*Hereiswaitingforyou!*/102. /* 103. SNODE*ziplist(SNODE*head1,SNODE*head2) 104. 105. 106. */107. 108. /*PRESETCODEEND-NEVERTOUCHCODEABOVE*/SNODE * ziplist( SNODE * head1, SNODE * head2 ) int m, n; SNODE *p1=head1, *p2=head2,*p11=NULL,*p22=NULL;m = listlen( head1 );n = listlen( head2 );while ( m > n )p1 = p1->next;m-;while ( m < n )p2 = p2->next;n-;p11=p1;p22=p2;while(p1->next->next!=NULL)if(p1->next->data!=p2->next->data)p11=p1->next;p22=p2->next;p1=p1->next;p2=p2->next;if(p1->next->data!=p2->next->data)return NULL;elsep22->next=p11->next;return p11->next; 4. 括號(hào)匹配(10分)成績(jī): 10 / 折扣: 0.84 括號(hào)匹配 (10分)成績(jī): 10 / 折扣: 0.8 假設(shè)一個(gè)算術(shù)表達(dá)式中包含圓括號(hào)、方括號(hào)兩種類型的括號(hào),試編寫一個(gè)判斷表達(dá)式中括號(hào)是否匹配的程序,匹配返回Match succeed!,否則返回Match false!。例 1+2*(3+4*(5+6)括號(hào)匹配 (1+2)*(1+2*(1+2)+3) 括號(hào)不匹配輸入包含圓括號(hào)、方括號(hào)兩種類型括號(hào)的算術(shù)表達(dá)式輸出匹配輸出 Match succeed! 不匹配輸出 Match false!例輸入 1+2* (3+4*(5+6) 輸出Match succeed! #include<stdio.h>int main()int flag=0;char a1000=0;char* p;p=&a0;char temp;temp=getchar();*p=temp;while(temp!=n)switch (temp)case (:p+;*p=temp;break;case ):if(*p!=()printf("Match false!n");return 0;*p=0;p-;break;case :p+;*p=temp;break;case:if(*p!=)printf("Match false!n");return 0;*p=0;p-;break;/endswiychtemp=getchar();/end whilwprintf("Match succeed!n");return 0;5. 迷宮問題(15分)成績(jī): 15 / 折扣: 0.85 迷宮問題(15分)成績(jī): 15 / 折扣: 0.8迷宮有一個(gè)入口,一個(gè)出口。一個(gè)人從入口走進(jìn)迷宮,目標(biāo)是找到出口。陰影部分和迷宮的外框?yàn)閴Γ恳徊阶咭桓?,每格有四個(gè)可走的方向,探索順序?yàn)椋耗?、東、北、西。 輸入:輸入迷宮數(shù)組輸出:若有解,輸出從入口到出口的一條路徑,否則輸出 there is no solution! 例(上圖所示的迷宮數(shù)組)輸入4 4 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 輸出<1,1> <2,1> <3,1> <3,2> <3,3> <4,3> <4,4> #include<iostream>using std:cin;using std:cout;using std:endl;int main()int a,b;cin>>a>>b;bool date102102;for(int i=0;i<102;i+)for (int j=0;j<102;j+)dateij=1;int stack5004=0;int p=1;stack02=5;stack10=1;stack11=1;stack13=5;for(int x=1;x<=a;x+)/input start for(int y=1;y<=b;y+)bool temp;cin>>temp;datexy=temp;/input finishint p1,p2;while(!(stackp0=a&&stackp1=b)/find startswitch (stackp2)case 0:/downif(stackp2=stackp3)stackp2+;break;p1=stackp0+1;p2=stackp1;if(datep1p2)/wallstackp2+;goto x1;else/roadstackp2+;p+;stackp0=p1;stackp1=p2;stackp3=2;break;case 1:/rightx1:if(stackp2=stackp3)stackp2+;break;p1=stackp0;p2=stackp1+1;if(datep1p2)/wallstackp2+;goto x2;else/roadstackp2+;p+;stackp0=p1;stackp1=p2;stackp3=3;break;case 2:/upx2:if(stackp2=stackp3)stackp2+;break;p1=stackp0-1;p2=stackp1;if(datep1p2)/wallstackp2+;goto x3;else/roadstackp2+;p+;stackp0=p1;stackp1=p2;stackp3=0;break;case 3:/leftx3:if(stackp2=stackp3)stackp2+;break;p1=stackp0;p2=stackp1-1;if(datep1p2)/wallstackp2+;goto x4;else/roadstackp2+;p+;stackp0=p1;stackp1=p2;stackp3=1;break;case 4:/backx4:stackp2=0;p-;break;case 5:cout<<"there is no solution!n"return 0;/find finishp=1;while(stackp2)cout<<"<"<<stackp0<<","<<stackp1<<"> "p+;cout<<"<"<<stackp0<<","<<stackp1<<"> "<<endl;return 0;6. 飛機(jī)場(chǎng)調(diào)度(15分)成績(jī): 15 / 折扣: 0.8在本實(shí)驗(yàn)中,需要同學(xué)們利用隊(duì)列實(shí)現(xiàn)一個(gè)飛機(jī)場(chǎng)調(diào)度模擬,根據(jù)不同的輸入?yún)?shù)得到不同的模擬結(jié)果。程序運(yùn)行開始,首先需要輸入以下參數(shù): 機(jī)場(chǎng)跑道數(shù),飛機(jī)降落占用跑道時(shí)間(整數(shù)), 飛機(jī)起飛占用跑道時(shí)間(整數(shù)) 整個(gè)模擬的時(shí)間以分鐘為單位,從 0 開始,每分鐘的開始需要輸入: 該分鐘要求降落飛機(jī)數(shù), 該分鐘要求起飛飛機(jī)數(shù) 機(jī)場(chǎng)調(diào)度原則是降落優(yōu)先起飛,在此原則下按來的順序排隊(duì);每駕飛機(jī)都有一個(gè)編號(hào),要起飛飛機(jī)從 1 開始,要降落飛機(jī)從 5001 開始;每駕飛機(jī)需要等待的時(shí)間是從其提要求開始到分配跑道為止;每個(gè)跑道都有一個(gè)編號(hào)(從 1 開始),都可以用來降落和起飛,但同一時(shí)間只能被一架飛機(jī)占用,占用時(shí)間為該飛機(jī)降落(起飛)占用跑道時(shí)間。 當(dāng)輸入的要求降落飛機(jī)數(shù)和要求起飛飛機(jī)數(shù)都小于 0 時(shí),表示機(jī)場(chǎng)關(guān)閉,不再接受新的請(qǐng)求,但余下沒有降落(起飛)的飛機(jī)需照常進(jìn)行。 模擬過程中需要隨時(shí)輸出以下數(shù)據(jù): 1. 當(dāng)前時(shí)間 (%4d) 2. 所有從占用變?yōu)榭臻e的跑道編號(hào) (在輸入降落、起飛飛機(jī)數(shù)前輸出) 3. 可以降落(起飛)飛機(jī)編號(hào)( 04d )、跑道編號(hào)( 02d ) (在輸入降落、起飛飛機(jī)數(shù)后輸出) 模擬結(jié)束后,程序需輸出以下統(tǒng)計(jì)結(jié)果: 1. 模擬時(shí)間( 4d ) 2. 降落平均等待時(shí)間( 4.1f ) 3. 起飛平均等待時(shí)間( 4.1f ) 4. 每條跑道被占用時(shí)間( 4d ) 5. 跑道平均被占用的百分比( 4.1f , 平均占用時(shí)間 100/ 模擬時(shí)間) 例: (下面的黑斜體為輸入) 4 3 5 Current Time: 0 1 4 airplane 5001 is ready to land on runway 01 airplane 0001 is ready to takeoff on runway 02 airplane 0002 is ready to takeoff on runway 03 airplane 0003 is ready to takeoff on runway 04 Current Time: 1 0 0 Current Time: 2 0 2 Current Time: 3 runway 01 is free 3 0 airplane 5002 is ready to land on runway 01 Current Time: 4 0 0 Current Time: 5 runway 02 is free runway 03 is free runway 04 is free 0 0 airplane 5003 is ready to land on runway 02 airplane 5004 is ready to land on runway 03 airplane 0004 is ready to takeoff on runway 04 Current Time: 6 runway 01 is free 2 4 airplane 5005 is ready to land on runway 01 Current Time: 7 -1 -1 Current Time: 8runway 02 is freerunway 03 is freeairplane 5006 is ready to land on runway 02airplane 0005 is ready to takeoff on runway 03Current Time: 9runway 01 is freeairplane 0006 is ready to takeoff on runway 01Current Time: 10runway 04 is freeairplane 0007 is ready to takeoff on runway 04Current Time: 11runway 02 is freeairplane 0008 is ready to takeoff on runway 02Current Time: 12Current Time: 13runway 03 is freeairplane 0009 is ready to takeoff on runway 03Current Time: 14runway 01 is freeairplane 0010 is ready to takeoff on runway 01Current Time: 15runway 04 is freeCurrent Time: 16runway 02 is freeCurrent Time: 17Current Time: 18runway 03 is freeCurrent Time: 19runway 01 is freesimulation finishedsimulation time: 19average waiting time of landing: 1.0average waiting time of takeoff: 4.2runway 01 busy time: 19runway 02 busy time: 16runway 03 busy time: 18runway 04 busy time: 15runway average busy time percentage: 89.5% /#include<stdio.h>#include<stdlib.h>int time,wayn,downtime,uptime,up,down,upwaiting,downwaiting,upcount,downcount,use;int* way;float* waytime;int manage()for(int i=1;i<=wayn;i+)if(*(way+i)=0)use-;if(downwaiting>0)*(way+i)=downtime;(*(waytime+i)+=downtime;printf("airplane %04d is ready to land on runway %02dn",downcount+,i);downwaiting-;use+;else if(upwaiting>0)*(way+i)=uptime;(*(waytime+i)+=uptime;printf("airplane %04d is ready to takeoff on runway %02dn",upcount+,i);upwaiting-;use+;else*(way+i)=-1;else if(*(way+i)<0)if(downwaiting>0)*(way+i)=downtime;(*(waytime+i)+=downtime;printf("airplane %04d is ready to land on runway %02dn",downcount+,i);downwaiting-;use+;else if(upwaiting>0)*(way+i)=uptime;(*(waytime+i)+=uptime;printf("airplane %04d is ready to takeoff on runway %02dn",upcount+,i);upwaiting-;use+;/end of forreturn 0;int main()float avewaitingup=0;float avewaitingdown=0;scanf("%d%d%d",&wayn,&downtime,&uptime);way=(int*) malloc (sizeof(int)*(wayn+1);waytime=(float*) malloc (sizeof(float)*(wayn+1);for(int i=0;i<=wayn;i+)*(way+i)=-1;*(waytime+i)=0;downcount=5001;upcount=1;use=0;printf("Current Time: 0n");scanf("%d%d",&down,&up);for(time=1;up>=0&&down>=0;)upwaiting+=up;downwaiting+=down;manage();avewaitingup+=upwaiting;avewaitingdown+=downwaiting;for(int i=0;i<=wayn;i+)(*(way+i)-;printf("Current Time: %4dn",time+);for(int i=1;i<=wayn;i+)if(*(way+i)=0)printf("runway %02d is freen",i);scanf("%d%d",&down,&up);manage();avewaitingup+=upwaiting;avewaitingdown+=downwaiting;while(use)for(int i=0;i<=wayn;i+)(*(way+i)-;printf("Current Time: %4dn",time+);for(int i=1;i<=wayn;i+)if(*(way+i)=0)printf("runway %02d is freen",i);manage();avewaitingup+=upwaiting;avewaitingdown+=downwaiting;time-;/finishprintf("simulation finishednsimulation time: %4dn",time);float aa=avewaitingdown/(downcount-5000-1),bb=avewaitingup/(upcount-1),cc=0;if(avewaitingdown=0|downcount=5001)aa=0;if(avewaitingup=0|upcount=1)bb=0;printf("average waiting time of landing: %4.1fnaverage waiting time of takeoff: %4.1fn",aa,bb);float all=0;int i=1;for(;i<=wayn;i+)printf("runway %02d busy time: %4.0fn",i,*(waytime+i);all+=*(waytime+i);if(all=0|time=0|wayn=0)cc=0;elsecc=all/wayn/time*100;

注意事項(xiàng)

本文(北京理工大學(xué)數(shù)據(jù)結(jié)構(gòu)編程練習(xí)答案)為本站會(huì)員(gbs****77)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!