版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 課 程 設 計</b></p><p><b> 目錄</b></p><p> 1課程設計任務書 …………………………………………………………………………3 </p><p> 2需求分析 …………………………………………………………………………………9 </p><
2、;p> 3概要設計 ………………………………………………………………………………10</p><p> 總體設計思路 ……………………………………………………………………………10</p><p> 主函數(shù)和子程序 …………………………………………………………………………11</p><p> 創(chuàng)建鏈表 ……………………………………………………………
3、……………………12</p><p> 實現(xiàn)排序 …………………………………………………………………………………12</p><p> 5 調(diào)試報告 ………………………………………………………………………………13</p><p> 6 改進意見及收獲體會 …………………………………………………………………20</p><p>
4、7 程序清單 ………………………………………………………………………………21</p><p> 8 主要參考文獻 …………………………………………………………………………29</p><p><b> 一元多項式運算</b></p><p><b> 需求分析</b></p><p>
5、 該程序的主要包括三大功能:加法、減法、乘法。</p><p> 1、加法:對多項式A(x)和B(x)進行相加運算,并排序;</p><p> 2、減法:對多項式A(x)和B(x)進行相減運算,并排序;</p><p> 3、乘法:對多項式A(x)和B(x)進行相乘運算,并排序;</p><p> 要實現(xiàn)對多項式的運算主要是對式中的系
6、數(shù)和指數(shù)的運算,每一項都會有系數(shù)和指數(shù),將每 項的系數(shù)和指數(shù)都放入結(jié)點中,那么對多項式的運算即為對鏈表進行操作。</p><p> 根據(jù)程序的功能,建立系統(tǒng)的體系結(jié)構(gòu),即將整個系統(tǒng)分解成若干子功能模塊:</p><p> 1、createlist 創(chuàng)建鏈表,把多項式的系數(shù)和指數(shù)放入結(jié)點中,系數(shù)為0結(jié)束鏈表的創(chuàng)建;</
7、p><p> 2、display 輸出鏈表中的系數(shù)和指數(shù),以“A(x)= ”的形式輸出;</p><p> 3、heb 查找到同類項后合并同類項;</p><p> 4、addlist 實現(xiàn)兩個鏈表的合并,并合并同類項,從而對兩個多項式相加;</p><p> 5、minus 多項式的減法運算,將第二個
8、鏈表中的系數(shù)取反后,再調(diào)用add_list;</p><p> 6、chengfa 多項式的乘法運算,將兩個鏈表結(jié)點中的系數(shù)相乘、指數(shù)相加后放入第三個 鏈表,調(diào)用heb功能;</p><p> 7、paixu、daoxu 對運算結(jié)束后的鏈表進行升序和降序;</p><p> 8、jiemian、主函數(shù)main 則是聯(lián)系各子函數(shù)的鏈,
9、同時也用來制作主界面。</p><p><b> 二、概要設計</b></p><p><b> 調(diào)試報告</b></p><p> ?。?)程序開始運行,進入通訊錄的主菜單,根據(jù)操作提示,選擇你將進行的操作。</p><p> ?。?)輸入1,選擇加法運算</p><p&g
10、t; (2)輸入2,選擇減法運算</p><p> ?。?)輸入3,選擇乘法運算</p><p> 改進意見及收獲體會 </p><p> 軟件課程設計能夠培養(yǎng)我們的動手能力,創(chuàng)新能力,同時使我們對所學知識進一步鞏固。為期一周的軟件課程設計,我們掌握了如何提出設想,如何調(diào)整思路,如何面對困難,如何解決問題。</p><p> 面對我們
11、的課題實現(xiàn)一元多項式運算,我思考了很久,主要是先進行構(gòu)思。首先分析了一元多項式,對于每一項都有系數(shù)和指數(shù),對一元多項式的運算即對系數(shù)和指數(shù)的運算。其次,按照要求需要使用單項鏈表,將每項的系數(shù)和指數(shù)放入結(jié)點,從而創(chuàng)建鏈表。第三,對鏈表進行操作,實現(xiàn)多項式的運算。</p><p> 當創(chuàng)建鏈表的函數(shù)寫完,我便思考加法、減法、乘法的算法。我發(fā)現(xiàn)三種運算方式雖然不同,但設計思路確是相通的。加法是在先合并鏈表后再合并同類
12、項而實現(xiàn)的,減法可以在系數(shù)取反后用加法實現(xiàn),乘法運算則是使每個結(jié)點相乘后放入第三個鏈表中,再合并同類項。因此,具體的各個功能可以分開設計,然后再各運算中調(diào)用,避免了重復編寫,例如程序中的heb和paixu就是按照這種想法設計的。</p><p> 在設計界面過程中,我確實花費了不少精力。為了界面美觀大方,我查找各種資料尋找有用的界面函數(shù),最終我找到了system(corlor)、system(cls)兩個函數(shù),
13、用來實現(xiàn)界面是顏色和清屏。在設置輸出圖像界面時,通過反復比較、反復更改從而實現(xiàn)了滿意的界面。</p><p> 程序編寫完畢,在編譯過程中又遇到了非常多的問題。我通過單步調(diào)試,反反復復,最終解決了這些問題。</p><p> 通過三天的努力,我實現(xiàn)了從構(gòu)思到編程,到各種功能的具體運行,整個過程是艱辛的,也是快樂。</p><p><b> 五、程序清
14、單:</b></p><p> #include<stdlib.h></p><p> #include<stdio.h></p><p> #include<conio.h></p><p> typedef struct list1</p><p> {in
15、t zhishu;</p><p> int xishu;</p><p> struct list1 *next;</p><p><b> };</b></p><p> typedef struct list1 node;</p><p> typedef node *link;&
16、lt;/p><p> /*****************************************************/</p><p> link create_list(link head)</p><p><b> { </b></p><p> link new1;</p><
17、;p> link pointer;</p><p> head=(link)malloc(sizeof(node));</p><p> if(head==NULL)</p><p> printf("出現(xiàn)錯誤!\n");</p><p><b> else</b></p>
18、<p><b> {</b></p><p> head->next=NULL;head->zhishu=0;head->xishu=0;</p><p> pointer=head;</p><p> printf("\n\n");</p><p><b
19、> while(1)</b></p><p><b> {</b></p><p> new1=(link)malloc(sizeof(node));</p><p> printf("\n 系數(shù):");</p><p> s
20、canf("%d",&(new1->xishu));</p><p> if (new1->xishu==0)</p><p><b> {</b></p><p> printf("\n ******************* 參數(shù)已輸入完成! ************
21、*************\n\n");</p><p> free(new1);break;</p><p><b> }</b></p><p> printf(" 輸入指數(shù):");</p><p> scanf("%d&
22、quot;,&(new1->zhishu));</p><p> new1->next=NULL;</p><p> pointer->next=new1;pointer=new1;</p><p><b> }</b></p><p><b> }</b><
23、/p><p> return head;</p><p><b> }</b></p><p> /*****************************************************/</p><p> link heb(link head)</p><p><b
24、> { </b></p><p><b> int a;</b></p><p> link pt1,pt2,t;</p><p> pt1=head->next;</p><p> while(pt1!=NULL)</p><p> { pt2=pt1;&
25、lt;/p><p> a=pt1->xishu;</p><p> while(pt2->next!=NULL)</p><p><b> { </b></p><p> if((pt1->zhishu)==(pt2->next->zhishu))</p><p>
26、;<b> { </b></p><p> t=pt2->next; </p><p> a=a+(t->xishu);</p><p> pt2->next=t->next;</p><p><b> free(t);</b></p><p
27、><b> }</b></p><p> else pt2=pt2->next;</p><p><b> }</b></p><p> pt1->xishu=a;</p><p> pt1=pt1->next;</p><p><
28、b> }</b></p><p> return head;</p><p><b> }</b></p><p> /*****************************************************/</p><p> link add_list(link head
29、1,link head2)</p><p><b> {</b></p><p><b> link pt1;</b></p><p><b> link pt2;</b></p><p> pt1=head1->next;</p><p>
30、; pt2=head2->next;</p><p> free(head2);</p><p> if(pt1==NULL)</p><p> pt1=head1;</p><p><b> else</b></p><p> while(pt1->next!=NULL)
31、</p><p> {pt1=pt1->next;</p><p><b> }</b></p><p> if(pt2==NULL)</p><p><b> { </b></p><p> return head1;</p><p&
32、gt;<b> }</b></p><p> else pt1->next=pt2;</p><p> head1=heb(head1);</p><p> return head1;</p><p><b> }</b></p><p> /*******
33、**********************************************/</p><p> link minus(link head1,link head2)</p><p><b> {</b></p><p> link pt,head3;</p><p> pt=head2->n
34、ext;</p><p> while(pt!=NULL)</p><p> {pt->xishu=-(pt->xishu);</p><p> pt=pt->next;</p><p><b> }</b></p><p> head3=add_list(head1,
35、head2);</p><p> return head3;</p><p><b> }</b></p><p> /*****************************************************/</p><p> link chengfa(link head1,link head
36、2)</p><p><b> { </b></p><p> link p1,p2,p3,s;</p><p> link head3=NULL;</p><p> head3=(link)malloc(sizeof(node)); </p><p> if(head3==NULL)&
37、lt;/p><p> {printf("Memory allocate Failure!\n");}</p><p><b> else</b></p><p> {head3->next=NULL;head3->zhishu=0;head3->xishu=0;};</p><p>
38、; p1=head1->next;p2=head2->next;p3=head3;</p><p> while(p1!=NULL)</p><p><b> { </b></p><p> p2=head2->next;</p><p> while(p2!=NULL)</p>
39、<p><b> {</b></p><p> s=(link)malloc(sizeof(node));</p><p> s->zhishu=p1->zhishu+p2->zhishu;</p><p> s->xishu=(p1->xishu)*(p2->xishu);</p&
40、gt;<p> s->next=NULL;</p><p> p3->next=s;</p><p><b> p3=s;</b></p><p> p2=p2->next;</p><p><b> }</b></p><p>
41、p1=p1->next;</p><p><b> }</b></p><p> head3=heb(head3);</p><p> return head3;</p><p><b> }</b></p><p> link daoxu(link head
42、)</p><p> { link p1,p2;</p><p> p1=head->next;</p><p> p2=p1->next;</p><p> p1->next=NULL;</p><p> while(p2!=NULL)</p><p><b&
43、gt; {</b></p><p> head->next=p2;</p><p> p2=p2->next;</p><p> head->next->next=p1;</p><p> p1=head->next;</p><p><b> }<
44、/b></p><p> return head;</p><p><b> }</b></p><p> /*****************************************************/</p><p> link paixu(link head) </p>&
45、lt;p><b> {</b></p><p> link p=head,q=head->next,f,t;</p><p> int j=0,i; </p><p> while(p!=NULL)</p><p><b> {</b></p><p>
46、<b> j++; </b></p><p> p=p->next;</p><p><b> }</b></p><p> if(j==1) </p><p><b> {</b></p>
47、;<p> printf("\n");</p><p> return head;</p><p><b> }</b></p><p><b> if(j==2) </b></p><p><b> {</b></p>
48、<p> printf("\n");</p><p> return head;</p><p><b> }</b></p><p><b> f=head;</b></p><p><b> if(j>2)</b></p
49、><p><b> {</b></p><p> printf("\n");</p><p> for(i=1;i<=j;i++)</p><p><b> { </b></p><p> while(q->next!=NULL)<
50、/p><p><b> {</b></p><p> if(q->zhishu>q->next->zhishu)</p><p> { t=q->next;</p><p> t=t->next;</p><p> q->next->next
51、=q;</p><p> q=q->next;</p><p> q->next->next=t;</p><p> f->next=q;</p><p><b> }</b></p><p> f=f->next;</p><p>
52、 q=q->next;</p><p><b> }</b></p><p><b> f=head;</b></p><p> q=head->next;</p><p><b> j--;</b></p><p><b&g
53、t; }</b></p><p><b> }</b></p><p> return head;</p><p><b> }</b></p><p> /*****************************************************/</p
54、><p> void display(link head)</p><p><b> {</b></p><p><b> link p;</b></p><p><b> p=head;</b></p><p> p=p->next;<
55、;/p><p> if(p==NULL)</p><p> printf("0");</p><p><b> else </b></p><p><b> { </b></p><p> if(p->xishu==0)printf(&quo
56、t;0");</p><p> else printf("(%d)x^(%d)",p->xishu,p->zhishu);</p><p> p=p->next;</p><p> while(p!=NULL)</p><p> { if(p->xishu==0)printf(&q
57、uot;+0");</p><p> else printf("+(%d)x^(%d)",p->xishu,p->zhishu);</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b>
58、;</p><p><b> }</b></p><p> /*****************************************************/</p><p> void jiemian()</p><p> { int i;</p><p> syste
59、m("cls");</p><p> system("color 2");</p><p> printf("\n ");</p><p> for(i=0;i<7;i++)</p><p> printf("★◇☆◆");&l
60、t;/p><p> for(i=0;i<1;i++)</p><p> printf("\n ○ ○");</p><p> printf("\n ● 歡迎使
61、用一元多項式運算器! ●");</p><p> printf("\n ○ ○");</p><p> printf("\n ●~`~`~`~`~`~`~`~`~`~`~`~`
62、~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`●"); </p><p> printf("\n ○ ○"); </p><p> printf("\n ● 說明:為鏈表輸入
63、數(shù)據(jù),系數(shù)值為零時退出! ●");</p><p> printf("\n ○ ○"); </p><p> printf("\n ●~`~`~`~`~`~`~`~`~`~`~`~`~`~`
64、~`~`~`~`~`~`~`~`~`~`~`~`~`●");</p><p> printf("\n ○ ○");</p><p> printf("\n ● ---
65、------------ ●");</p><p> printf("\n ○ (1)加法! ○"); </p><p> printf("\n ●
66、 --------------- ●"); </p><p> printf("\n ○ (2)減法! ○"); </p><p> printf("\n ●
67、 --------------- ●"); </p><p> printf("\n ○ (3)乘法! ○"); </p><p> printf("\n ●
68、 --------------- ●"); </p><p> printf("\n ○ (0)退出運算! ○"); </p><p> printf("\n ●
69、 --------------- ●"); </p><p> printf("\n ○ ○"); </p><p> printf("\n
70、 ");</p><p> for(i=0;i<7;i++)</p><p> printf("★◇☆◆");</p><p> printf("\n\n 請輸入運算法則:");</p><p><b> }</b></
71、p><p> int main()</p><p><b> { </b></p><p> int q=1,i;</p><p><b> int f;</b></p><p> while(q==1)</p><p><b> {
72、 </b></p><p> jiemian();</p><p> scanf("%d",&q);</p><p><b> if(q!=0)</b></p><p><b> {</b></p><p> link hea
73、d1=NULL;</p><p> link head2=NULL;</p><p> link head3=NULL;</p><p> system("cls");</p><p> system("color 6");</p><p> if(q>=1&am
74、p;&q<=3)</p><p><b> {</b></p><p> printf("\n\n *******************請輸入A(x)的系數(shù)和指數(shù)*************************");</p><p> head1=create_list(head1);<
75、;/p><p> printf("輸入任意鍵繼續(xù)! ");</p><p> scanf("%d",&f);</p><p> system("cls");</p><p> printf("\n ********************請輸入B(x)
76、的系數(shù)和指數(shù)************************");</p><p> head2=create_list(head2);</p><p> printf("輸入任意鍵繼續(xù)! ");</p><p> scanf("%d",&f);</p><p> if(hea
77、d1!=NULL&&head2!=NULL)</p><p><b> { </b></p><p> system("cls");</p><p> printf("\n ********************您輸入的A(x)和B(x)如下*******************
78、*****");</p><p> printf("\n\n ● A(x)=");</p><p> display(head1);</p><p> printf("\n\n ● B(x)=");</p><p&g
79、t; display(head2);</p><p><b> switch(q)</b></p><p><b> {</b></p><p> case 1:head3=paixu(add_list(head1,head2));</p><p> printf("\n
80、 ● A(x)+B(x)=");</p><p><b> break;</b></p><p> case 2:head3=paixu(minus(head1,head2));</p><p> printf("\n ● A(x)-B(x)=&quo
81、t;);</p><p><b> break;</b></p><p> case 3:paixu(head3=chengfa(head1,head2));</p><p> printf("\n ● A(x)*B(x)=");</p><p><b
82、> break;</b></p><p> default:printf("請輸入正確的序號!");break;</p><p><b> }</b></p><p> display(head3);</p><p> if(head3->next!=NULL&
83、;&head3->next->next!=NULL)</p><p><b> {</b></p><p> printf("\n\n 或者:");</p><p> display(daoxu(head3));</p><p>&
84、lt;b> }</b></p><p> printf("\n\n *******************************************************************");</p><p> printf("\n\n ● 運算結(jié)束了!");&l
85、t;/p><p> printf("\n\n ● 您需要返回嗎?YES=1 NO=0\n");</p><p> scanf("%d",&i);</p><p><b> q=i;</b></p><p><b> }&l
86、t;/b></p><p><b> } </b></p><p><b> else q=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
87、 }</b></p><p> 六、 主要參考文獻:</p><p> [1] 徐士良. 計算機軟件技術基礎[M] . 北京:清華大學出版社,2004.</p><p> [2] 廖雷.C程序設計實踐教程[M].北京: 高等教育出版社,2003.</p><p> [3] 潭浩強. C程序設計(第三版). 北京:清華大學出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一元多項式運算課程設計報告
- 課程設計---一元多項式的代數(shù)運算
- 課程設計--一元多項式計算
- 數(shù)據(jù)結(jié)構(gòu)課程設計報告-一元多項式加減運算
- 數(shù)據(jù)結(jié)構(gòu)課程設計報告-一元多項式加減運算
- 數(shù)據(jù)結(jié)構(gòu)課程設計-一元多項式的代數(shù)運算
- 數(shù)據(jù)結(jié)構(gòu)課程設計---一元多項式
- 數(shù)據(jù)結(jié)構(gòu)課程設計----一元多項式
- 數(shù)據(jù)結(jié)構(gòu)課程設計一元多項式的加減法運算
- 一元多項式計算(數(shù)據(jù)結(jié)構(gòu)課程設計)
- 一元稀疏多項式計算器課程設計
- 數(shù)據(jù)結(jié)構(gòu)課程設計---一元多項式計算
- 課程設計報告---一元多項式計算器
- 一元多項式課程設計--用c語言實現(xiàn)一元多項式的加減法計算
- c++多項式課程設計---多項式的運算
- c++多項式課程設計---多項式的運算
- 課程設計報告--一元多項式計算vs迷宮求解
- 一元多項式的計算數(shù)據(jù)結(jié)構(gòu)課程設計
- 數(shù)據(jù)結(jié)構(gòu)課程設計-一元多項式計算器
- c++課程設計---一元多項式簡單計算器
評論
0/150
提交評論