版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄1、問(wèn)題描述2、設(shè)計(jì)思路3、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)4、功能函數(shù)設(shè)計(jì)5、程序代碼6、運(yùn)行與測(cè)試7、設(shè)計(jì)心得一、大數(shù)相乘1、問(wèn)題描述:<1>輸入兩個(gè)相對(duì)較大的正整數(shù),能夠通過(guò)程序計(jì)算出其結(jié)果2、設(shè)計(jì)思路:<1>首先考慮設(shè)計(jì)將兩個(gè)大數(shù)按照輸入順序存入分別存入數(shù)a ,b中.<2>把這個(gè)數(shù)組中的每一位數(shù)字單獨(dú)來(lái)進(jìn)行乘法運(yùn)算,比如我們可 以用一個(gè)數(shù)字和另外一個(gè)數(shù)組中的每一位去相乘,從而得到乘法運(yùn) 算中一行的數(shù)字,再將每一行數(shù)字錯(cuò)位相加。這就是乘法運(yùn)算的過(guò) 從低位往高位依次計(jì)算,同時(shí)確定每一列的項(xiàng)數(shù),確定每一位上的 結(jié)果存入數(shù)組c中.<3>找到最高位在數(shù)組中的項(xiàng)ci
2、,然后依次輸出各位上的數(shù)值<4>通過(guò)主函數(shù)來(lái)調(diào)用其它各個(gè)函數(shù)。3、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):<1>輸入階段采用一維數(shù)組a ,b在輸入階段當(dāng)大數(shù)輸入時(shí), 大 數(shù)a,b從高位到低位分別依次存入數(shù)組 a ,b。<2>調(diào)用函數(shù)計(jì)算階段采用一維數(shù)組 c在調(diào)用sum(a,b,m,n)函數(shù) 中,在計(jì)算過(guò)程中,由個(gè)位到高位依次計(jì)算各位的結(jié)果,并依次存 入數(shù)組c中。4、功能函數(shù)設(shè)計(jì):<1>找出每一列的所有項(xiàng)首先找規(guī)律,如下所示進(jìn)行乘法:a0a1a2b0b1b2b2a0b2a1b2a2b1a0b1a1b1a2bOaOb0a1b0a2下標(biāo)之和0 12i=4i=3i=2的數(shù)值)即有
3、3i=14i =0(循環(huán)時(shí)的i下標(biāo)之和二m+n-2-i,由此限定條件可設(shè)計(jì)循環(huán)得出每一列的所有項(xiàng)。故首先解決了找出每一列所有項(xiàng)的問(wèn)題。<2>計(jì)算從低位到高位每一位的值。顯然考慮到進(jìn)位的問(wèn)題,故必須從低位到高位依次計(jì)算,對(duì)于每一 列,第一項(xiàng)可以除十取余數(shù),保留在原位,存入c,所得商進(jìn)位 存入mm。然后對(duì)于第二列,第一項(xiàng)加進(jìn)位mm,然后取余數(shù)存入 su,再加第二項(xiàng),取余數(shù)存入c,求商存入進(jìn)位mm,直到該列所有 項(xiàng)參與運(yùn)算到該列結(jié)束時(shí),求的最終的c,和mm.依次進(jìn)行后面的 運(yùn)算。<3>找出反向存入結(jié)果c中的首項(xiàng).因?yàn)樽罡呶灰欢ú粸榱?,故可以設(shè)計(jì)程序從c399開(kāi)始判斷,當(dāng)ci
4、不等于零時(shí),即為最高項(xiàng)。<4>設(shè)計(jì)主函數(shù),依次調(diào)用如上函數(shù)。然后通過(guò)for循環(huán)5、程序代碼:#i nclude <stdio.h>#in elude <math.h>void sum(i nt a200,i nt b200,i nt m,i nt n)結(jié)果在數(shù)組里順序是反著的int mm=O; 保存進(jìn)位int c400=0; 保存結(jié)果int i,j,su,tt;for(i=0;i<m+n;i+)su=0;for(j=0;j<m;j+)if(tt=(m-1+ n-1-i-j)>=n |(tt=(m-1+ n-1-i-j)<0)con t
5、i nue;elsesu=su+aj*bm-1+ n-1-i-j; su=su+mm;ci=su%10;mm=su/10;prin tf("n*n");printf("結(jié)果是:n");for(i=399;i>=0;i-)找首位if(ci!=O)tt=i;break;else con ti nue;for(i=tt;i>=0;i-) 輸出prin tf("%d",ci);prin tf("n");void mai n()int i,m, n,c;int a200=0,b200=0;printf("
6、;f*n");printf("請(qǐng)輸入第一個(gè)數(shù)字:n");for(i=0;(c=getchar()!='n'i+)ai=c-48;m=i;prin tf("n*n");printf("請(qǐng)輸入第二個(gè)數(shù)字:n");for(i=0;(c=getchar()!='n'i+) bi=c-48;n=i;/m,n為數(shù)字長(zhǎng)度 sum(a,b,m, n);6運(yùn)行與測(cè)試:7、設(shè)計(jì)心得:根據(jù)數(shù)字相乘原理,編程實(shí)現(xiàn)了大數(shù)相乘,雖然過(guò)程中出現(xiàn)了許多問(wèn)題但經(jīng)過(guò)與同學(xué)討論后都順利解決二、多項(xiàng)式相乘1、問(wèn)題描述:<1&g
7、t;能夠按照指數(shù)降序排列建立多項(xiàng)式,能夠完成兩個(gè)多項(xiàng)式的相 乘,并將結(jié)果輸出。2、設(shè)計(jì)思路:這個(gè)程序的關(guān)鍵是多項(xiàng)式的創(chuàng)建和排列,以及相乘時(shí)相同指數(shù)的系 數(shù)相加。由于多項(xiàng)式擁有指數(shù)和系數(shù) (假設(shè)基數(shù)已定),所以可以 定義一個(gè)包含指數(shù)系數(shù)的結(jié)構(gòu)體,用單鏈表存儲(chǔ)多項(xiàng)式的數(shù)據(jù),所 以結(jié)構(gòu)體包含next指針。數(shù)據(jù)插入時(shí)比較兩數(shù)的指數(shù),按照降序排 序,從表頭的next開(kāi)始,直至找到合適的位置,然后開(kāi)始鏈表中數(shù) 值的插入,如果相等則直接將指數(shù)相加,如果大于就將新數(shù)據(jù)插入 到當(dāng)前指向的前面,否則將新數(shù)據(jù)插入到最后。輸入完數(shù)據(jù)后相 乘,多項(xiàng)式運(yùn)算時(shí)要循環(huán)遍歷整個(gè)多項(xiàng)式,多項(xiàng)式的每一組數(shù)據(jù)都 要和另一個(gè)多項(xiàng)式整組
8、數(shù)據(jù)相乘,直到兩個(gè)多項(xiàng)式都遍歷完結(jié)束。3、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):<1>對(duì)已排序且合并了同指數(shù)項(xiàng)的兩個(gè)多項(xiàng)式實(shí)現(xiàn)乘法操作,并輸出結(jié)果;<2>結(jié)果多項(xiàng)式要求以動(dòng)態(tài)鏈表為存儲(chǔ)結(jié)構(gòu),復(fù)用原多項(xiàng)式的結(jié)點(diǎn)空間;<3>輸出結(jié)果多項(xiàng)式要求按指數(shù)升序排列,同指數(shù)的多項(xiàng)要合并,項(xiàng)數(shù)的正負(fù)號(hào)要求顯示合理。4、功能函數(shù)設(shè)計(jì)(見(jiàn)源代碼)5、程序代碼:#i nclude <stdio.h>#i nclude <stdlib.h>#defi ne TRUE 1#defi ne FALSE 0#defi ne N sizeof(struct qua ntic)/跳轉(zhuǎn)頁(yè)面 v
9、oid welcome()prin tf("n*n");/創(chuàng)建多項(xiàng)式結(jié)構(gòu)體struct qua nticint xishu;int mi;struct qua ntic *n ext;;/得到一元變量char getx(void)char x;printf("n 請(qǐng)輸入一元變量:");sca nf("%c", &x);return x;/創(chuàng)建多項(xiàng)式鏈表struct qua ntic *in put(void)struct qua ntic *p1, *p2, *head;head = p2 = (struct qua ntic
10、 *)malloc(N);printf("n 請(qǐng)輸入:系數(shù) 幕值(系數(shù)輸入0結(jié)束)。n");p1 = (struct qua ntic *)malloc(N);sca nf("%d %d", & p1 -> xishu, & p1 -> mi);while(p1 -> xishu != 0)p2 -> n ext = p1;p2 = pl;pl = (struct qua ntic *)malloc(N); scanf("%d %d", & pl -> xishu, & p
11、l -> mi);p2 -> next = NULL;free(p1);retur n head;/查找void fin d(char x, struct qua ntic *p)struct qua ntic *p1;int m, n, i = 0;p1 = p;printf("1.按系數(shù)查找。n");printf("2.按指數(shù)查找。n");printf("0.退出查找。n");sca nf("%d", &m);switch(m)case 1:printf("請(qǐng)輸入索引關(guān)鍵字:&qu
12、ot;);sca nf("%d", &n);pl = pl -> n ext;while(p1 != NULL)if(p1 -> xishu = n)prin tf("%d%c(%d)", p1 -> xishu, x, p1 -> mi);i +;p1 = p1 ->n ext;if(i = 0)printf("查無(wú)此數(shù)據(jù)。n");prin tf("n");fin d(x, p);break;case 2:printf("請(qǐng)輸入索引關(guān)鍵字:");sea n
13、f("%d", &n);pl = pl -> n ext;while(p1 != NULL)if(p1 -> mi = n)prin tf("%d%c(%d)", p1 -> xishu, x, p1 -> mi);i +;p1 = p1 ->n ext;if(i = 0)printf("查無(wú)此數(shù)據(jù)。n");prin tf("n");fin d(x, p);break;ease 0:welcome。;/多項(xiàng)式相乘struct qua ntic *MulExp(struct qu
14、a ntic *exp1,struct qua ntic *exp2) struct qua ntic *head,*p1,*q,*p2,*last,pre,*p;int flag=TRUE;head=p1=*exp1;/p1=p1- >n ext;for(;p1-> next != NULL;p 仁p1-> next);p=last=p1;p1=(*exp1)->n ext;while(p1 != p->n ext)pre = *p1;flag=TRUE;p2=(*exp2)-> next;while(p2)if(flag=TRUE)p1->xish
15、u=p1->xishu*p2->xishu;p1->mi=p1->mi+p2->mi;p2=p2->n ext;flag=FALSE;elseq=(struct qua ntic *)malloc(N);q->xishu=pre.xishu*p2->xishu;q->mi=pre.mi+p2->mi;last- >n ext=q;last=q;p2=p2->n ext;p1=p1- >n ext;last- >n ext=NULL;retur n head;/排序多項(xiàng)式struct qua ntic *sort
16、(struct qua ntic *pol)struct qua ntic *head = pol;struct qua ntic *p,*q;struct qua ntic *r,*t;if(head-> next = NULL)printf("請(qǐng)輸入有效信息。n");elsep = head->n ext;q = p->n ext;p->n ext = NULL;p = q;while(p!=NULL)r = head;q = r->n ext;while(q != NULL&& q->mi < p->mi
17、)r = q;q = q->n ext;t=p->n ext;p->n ext=r- >n ext;r->n ext=p;P=t; return(head);/合并多項(xiàng)式struct qua ntic *comb in e(struct qua ntic *head)struct qua ntic *p1,*p2;pl = head ->n ext;while(p1 -> next != NULL )if(p1 -> next -> mi = p1 -> mi)p2 = p1 ->n ext;p1 -> xishu = p
18、1 -> xishu + p2 -> xishu;p1 -> n ext = p1 -> n ext ->n ext;free(p2);elsep1 = pl -> n ext;return(head);/輸出多項(xiàng)式void output(char x, struct qua ntic *p)p = p -> n ext;while(p != NULL)if(p -> xishu <0 && p != NULL)prin tf("b b");prin tf("%d%c(%d)+", p -> xishu, x, p -> mi); p = p ->n ext;prin tf("b ");prin tf("n"); mai n()char x;struct qua ntic *p, *q, *l, *s, *k, *a, *b, *c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文明班級(jí)建設(shè)方案
- 2024年網(wǎng)絡(luò)追思與紀(jì)念服務(wù)合同3篇
- 2025年熱孔高分子材料項(xiàng)目提案報(bào)告模范
- 語(yǔ)文人教版七年級(jí)上冊(cè)《松坊溪的冬天》解析教學(xué)設(shè)計(jì)
- 2024年知識(shí)產(chǎn)權(quán)許可使用合同標(biāo)的描述
- 手術(shù)室?guī)Ы坦ぷ饔?jì)劃
- 2025年抗風(fēng)濕藥項(xiàng)目提案報(bào)告
- 2024年物業(yè)費(fèi)用構(gòu)成及計(jì)算合同3篇
- 2025年未硫化復(fù)合橡膠及其制品項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 二零二五年度個(gè)人合伙民宿資產(chǎn)清算及收益分配合同3篇
- 電氣設(shè)備火災(zāi)現(xiàn)場(chǎng)處理措施
- 《格林童話》課外閱讀試題及答案
- “銷售技巧課件-讓你掌握銷售技巧”
- 2019北師大版高中英語(yǔ)選修一UNIT 2 單詞短語(yǔ)句子復(fù)習(xí)默寫(xiě)單
- 房地產(chǎn)項(xiàng)目保密協(xié)議
- 2023年云南省初中學(xué)業(yè)水平考試 物理
- 【安吉物流股份有限公司倉(cāng)儲(chǔ)管理現(xiàn)狀及問(wèn)題和優(yōu)化研究15000字(論文)】
- 火災(zāi)自動(dòng)報(bào)警系統(tǒng)施工及驗(yàn)收調(diào)試報(bào)告
- 《13464電腦動(dòng)畫(huà)》自考復(fù)習(xí)必備題庫(kù)(含答案)
- 中國(guó)成人血脂異常防治指南課件
- 2023塔式太陽(yáng)能熱發(fā)電廠集熱系統(tǒng)設(shè)計(jì)規(guī)范
評(píng)論
0/150
提交評(píng)論