版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課 程 設(shè) 計</b></p><p><b> 目錄</b></p><p> 1課程設(shè)計任務(wù)書 …………………………………………………………………………3 </p><p> 2需求分析 …………………………………………………………………………………9 </p><
2、;p> 3概要設(shè)計 ………………………………………………………………………………10</p><p> 總體設(shè)計思路 ……………………………………………………………………………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 改進(jìn)意見及收獲體會 …………………………………………………………………20</p><p>
4、7 程序清單 ………………………………………………………………………………21</p><p> 8 主要參考文獻(xiàn) …………………………………………………………………………29</p><p><b> 一元多項式運算</b></p><p><b> 需求分析</b></p><p>
5、 該程序的主要包括三大功能:加法、減法、乘法。</p><p> 1、加法:對多項式A(x)和B(x)進(jìn)行相加運算,并排序;</p><p> 2、減法:對多項式A(x)和B(x)進(jìn)行相減運算,并排序;</p><p> 3、乘法:對多項式A(x)和B(x)進(jìn)行相乘運算,并排序;</p><p> 要實現(xiàn)對多項式的運算主要是對式中的系
6、數(shù)和指數(shù)的運算,每一項都會有系數(shù)和指數(shù),將每 項的系數(shù)和指數(shù)都放入結(jié)點中,那么對多項式的運算即為對鏈表進(jìn)行操作。</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é)束后的鏈表進(jìn)行升序和降序;</p><p> 8、jiemian、主函數(shù)main 則是聯(lián)系各子函數(shù)的鏈,
9、同時也用來制作主界面。</p><p><b> 二、概要設(shè)計</b></p><p><b> 調(diào)試報告</b></p><p> (1)程序開始運行,進(jìn)入通訊錄的主菜單,根據(jù)操作提示,選擇你將進(jìn)行的操作。</p><p> (1)輸入1,選擇加法運算</p><p&g
10、t; ?。?)輸入2,選擇減法運算</p><p> (3)輸入3,選擇乘法運算</p><p> 改進(jìn)意見及收獲體會 </p><p> 軟件課程設(shè)計能夠培養(yǎng)我們的動手能力,創(chuàng)新能力,同時使我們對所學(xué)知識進(jìn)一步鞏固。為期一周的軟件課程設(shè)計,我們掌握了如何提出設(shè)想,如何調(diào)整思路,如何面對困難,如何解決問題。</p><p> 面對我們
11、的課題實現(xiàn)一元多項式運算,我思考了很久,主要是先進(jìn)行構(gòu)思。首先分析了一元多項式,對于每一項都有系數(shù)和指數(shù),對一元多項式的運算即對系數(shù)和指數(shù)的運算。其次,按照要求需要使用單項鏈表,將每項的系數(shù)和指數(shù)放入結(jié)點,從而創(chuàng)建鏈表。第三,對鏈表進(jìn)行操作,實現(xiàn)多項式的運算。</p><p> 當(dāng)創(chuàng)建鏈表的函數(shù)寫完,我便思考加法、減法、乘法的算法。我發(fā)現(xiàn)三種運算方式雖然不同,但設(shè)計思路確是相通的。加法是在先合并鏈表后再合并同類
12、項而實現(xiàn)的,減法可以在系數(shù)取反后用加法實現(xiàn),乘法運算則是使每個結(jié)點相乘后放入第三個鏈表中,再合并同類項。因此,具體的各個功能可以分開設(shè)計,然后再各運算中調(diào)用,避免了重復(fù)編寫,例如程序中的heb和paixu就是按照這種想法設(shè)計的。</p><p> 在設(shè)計界面過程中,我確實花費了不少精力。為了界面美觀大方,我查找各種資料尋找有用的界面函數(shù),最終我找到了system(corlor)、system(cls)兩個函數(shù),
13、用來實現(xiàn)界面是顏色和清屏。在設(shè)置輸出圖像界面時,通過反復(fù)比較、反復(fù)更改從而實現(xiàn)了滿意的界面。</p><p> 程序編寫完畢,在編譯過程中又遇到了非常多的問題。我通過單步調(diào)試,反反復(fù)復(fù),最終解決了這些問題。</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> 六、 主要參考文獻(xiàn):</p><p> [1] 徐士良. 計算機(jī)軟件技術(shù)基礎(chǔ)[M] . 北京:清華大學(xué)出版社,2004.</p><p> [2] 廖雷.C程序設(shè)計實踐教程[M].北京: 高等教育出版社,2003.</p><p> [3] 潭浩強(qiáng). C程序設(shè)計(第三版). 北京:清華大學(xué)出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一元多項式運算課程設(shè)計報告
- 課程設(shè)計---一元多項式的代數(shù)運算
- 課程設(shè)計--一元多項式計算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-一元多項式加減運算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-一元多項式加減運算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-一元多項式的代數(shù)運算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---一元多項式
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----一元多項式
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計一元多項式的加減法運算
- 一元多項式課程設(shè)計--用c語言實現(xiàn)一元多項式的加減法計算
- 一元多項式計算(數(shù)據(jù)結(jié)構(gòu)課程設(shè)計)
- 一元稀疏多項式計算器課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---一元多項式計算
- 課程設(shè)計報告---一元多項式計算器
- c++多項式課程設(shè)計---多項式的運算
- c++多項式課程設(shè)計---多項式的運算
- 課程設(shè)計報告--一元多項式計算vs迷宮求解
- 一元多項式的計算數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告一元多項式的計算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告一元多項式的計算
評論
0/150
提交評論