2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  課 程 設 計 報 告</p><p>  課程名稱 數(shù)據(jù) 結(jié)構(gòu) </p><p>  題 目 長整數(shù)運算 </p><p>  學生姓名 </p><p>  班級/學號 </p&

2、gt;<p><b>  需求分析</b></p><p>  設計一個實現(xiàn)任意長的整數(shù)間進行四則運算的程序,要求完成長整數(shù)的加運算和減運算。長整數(shù)的長度沒有限制,可以是任意長。正確處理好運算之后的進位和借位。</p><p>  輸入:[-]**,****,****;[-]*,****,****,**** //[-]表示“-”可選</

3、p><p>  輸出:**,****,****,****是否繼續(xù)計算(Y/N):</p><p>  功能:能正確進行相關(guān)數(shù)據(jù)的加減運算</p><p><b>  測試數(shù)據(jù):</b></p><p><b>  0;0;輸出“0”</b></p><p>  2345,6789

4、;7654,3211;輸出“1,0000,0000”</p><p>  1,0000,0000,0000;-9999,9999;輸出“9999,0000,0001”</p><p>  1,0001,00001;-1,0001,0000;輸出“0”</p><p><b>  自選數(shù)據(jù) </b></p><p><

5、;b>  概要設計</b></p><p>  使用雙向循環(huán)鏈表實現(xiàn)長整數(shù)的運算及存儲,構(gòu)造雙向循環(huán)鏈表,創(chuàng)建雙向循環(huán)鏈表表示兩個整數(shù)</p><p>  設計兩整數(shù)相加的函數(shù)Add(),addtwo(),其中Add()調(diào)用addtwo()函數(shù),addtwo()具體實現(xiàn)兩個整數(shù)的加減操作,進位及借位問題;設計顯示函數(shù)Display()及主函數(shù)main()</p>

6、;<p><b>  詳細設計</b></p><p><b>  數(shù)據(jù)結(jié)構(gòu)設計</b></p><p><b>  雙向循環(huán)鏈表的構(gòu)造</b></p><p>  typedef struct LinkNode{</p><p>  int data;

7、 //記錄每個節(jié)點的整數(shù)(小于)</p><p>  LinkNode *next, *pre; //記錄下一個節(jié)點的地址和前一個節(jié)點的地址</p><p>  }linklist;</p><p>  創(chuàng)建兩個長整數(shù)的鏈表</p><p><b>  偽算法 </b></p>&

8、lt;p>  void Creat(char a[]) //引入字符串,創(chuàng)立兩個鏈表,分別表示兩個整數(shù)</p><p><b>  {</b></p><p>  int 記錄字符串i;記錄加數(shù)節(jié)點數(shù)j;記錄被加數(shù)節(jié)點數(shù)s;標記字符串中的‘-’號</p><p>  記錄字符串中的字符轉(zhuǎn)化為整數(shù)的值k,

9、使每個節(jié)點記錄位l</p><p>  while(指針所指不是“;”)被加數(shù)字符數(shù)m自動加1 //m記錄字符串中被加數(shù)的字符數(shù)</p><p>  n=m; </p><p>  while(執(zhí)政沒有指到結(jié)尾處) 總字符串n位數(shù)自動加1; //n記錄字符串的總字符數(shù)<

10、;/p><p><b>  if被加數(shù)不是負數(shù)</b></p><p><b>  {</b></p><p>  head0->data=(-1); //記錄整數(shù)符號</p><p><b>  w=1;</b></p><p>

11、;<b>  }</b></p><p>  else {head0->data=1;}</p><p>  for(i=m-1;i>=w;i--) </p><p><b>  {</b></p><p>  If指針所指為數(shù)字,而不是“,”

12、 //把字符轉(zhuǎn)化為整數(shù)</p><p><b>  {</b></p><p>  k+=(a[i]-'0')*sum(l); //sum()計算的乘方</p><p><b>  l++;</b></p><p><b>  }</b>&l

13、t;/p><p>  if(a[i]==','||i==w)</p><p><b>  {</b></p><p>  把整數(shù)存到雙向循環(huán)鏈表中</p><p>  s++; //節(jié)點數(shù)加</p><p>  k=0;

14、 //重新初始化k和l</p><p>  l=0; </p><p><b>  }</b></p><p><b>  }</b></p><p>  head0->pre->data

15、*=s; //存儲整數(shù)符號和節(jié)點數(shù)</p><p><b>  }</b></p><p><b>  調(diào)試分析</b></p><p>  調(diào)試過程中,連續(xù)輸入數(shù)字運算,速度會明顯變慢,發(fā)現(xiàn)在初始化鏈表及運算后沒有釋放鏈表,造成系統(tǒng)資源浪費,經(jīng)改造后自愛后面添加了析構(gòu)函數(shù)</p&

16、gt;<p><b>  算法的時空分析</b></p><p>  創(chuàng)建整數(shù)鏈表有三個循環(huán),次數(shù)都為n。時間復雜度和空間復雜都都為O(n)</p><p><b>  使用說明和測試結(jié)果</b></p><p>  1、使用說明:用戶按照屏幕所顯示的提示來正確輸入數(shù)字</p><p>

17、;  其中[-]表示“-”為可選,從右至左每四位數(shù)字一個“,”</p><p><b>  2、測試結(jié)果:</b></p><p><b>  心得體會</b></p><p>  通過此實驗,加深了我對鏈表的基本操作,對雙向鏈表及循環(huán)鏈表的操作及實際運用有了很深的體會,在處理數(shù)字的進位借位時有了進一步的提高。</p

18、><p><b>  附錄</b></p><p><b>  鏈表的創(chuàng)建:</b></p><p>  #include<stdio.h></p><p>  #include<math.h></p><p>  #include<stdlib.h

19、></p><p>  typedef struct LinkNode{</p><p>  int data; //記錄每個節(jié)點的整數(shù)(小于)</p><p>  LinkNode *next, *pre; //記錄下一個節(jié)點的地址和前一個節(jié)點的地址</p><p>  }linklist

20、;</p><p>  linklist *head0;</p><p>  linklist *head1; //head0,head1分別記錄兩個整數(shù)鏈表的頭指針</p><p>  linklist *currptr;</p><p>  linklist *result; //result記錄結(jié)果鏈表的頭指針

21、</p><p>  void Creat(char a[]){ //引入字符串,創(chuàng)立兩個鏈表,分別表示兩個整數(shù)</p><p>  int i=0,j=0,m=0,n=0,k=0,l=0,s=0,w=0; </p><p>  //i記錄字符串,j記錄加數(shù)節(jié)點數(shù);s記錄被加數(shù)節(jié)點數(shù);w標記字符串中的‘-’號</p>

22、;<p>  //k記錄字符串中的字符轉(zhuǎn)化為整數(shù)的值,l使每個節(jié)點記錄位</p><p>  while(a[m]!=';') m++; //m記錄字符串中被加數(shù)的字符數(shù)</p><p>  n=m; </p><p>  while(a[n]!='\

23、0') n++; //n記錄字符串的總字符數(shù)</p><p>  if(a[0]=='-'){</p><p>  head0->data=(-1); //記錄整數(shù)符號</p><p><b>  w=1;</b></p><p><b>  

24、}</b></p><p>  else {head0->data=1;}</p><p>  for(i=m-1;i>=w;i--){</p><p>  if(a[i]!=',') { //把字符轉(zhuǎn)化為整數(shù)</p><p>  k+=(a[i]-'0'

25、)*sum(l); //sum()計算的乘方</p><p><b>  l++;</b></p><p><b>  }</b></p><p>  if(a[i]==','||i==w){</p><p>  currptr=(linklist *)malloc(siz

26、eof(linklist)); //把整數(shù)存到雙向循環(huán)鏈表中</p><p>  currptr->data=k;</p><p>  currptr->next=head0;</p><p>  currptr->pre=head0->pre;</p><p>  head0->pre->

27、;next=currptr;</p><p>  head0->pre=currptr;</p><p>  head0=currptr;</p><p>  s++; //節(jié)點數(shù)加</p><p>  k=0; //重新初始

28、化k和l</p><p>  l=0; </p><p><b>  }</b></p><p><b>  }</b></p><p>  head0->pre->data*=s; //存儲整數(shù)符

29、號和節(jié)點數(shù)</p><p><b>  }</b></p><p><b>  測試函數(shù):</b></p><p>  void main() //主函數(shù)</p><p><b>  {</b></p><p>  

30、char ch[20];//鏈表對象</p><p>  char Yes_No;</p><p>  LinkList() ;</p><p>  LinkList1();</p><p>  printf("|輸入兩個任意長的整數(shù)。 |\n");</p><p><b&

31、gt;  do{</b></p><p>  printf("|輸入形式為:[-]**,****,****;[-]*,****,****,****|\n");</p><p>  printf("|即符號+數(shù),每位加一個',',兩個數(shù)之間用';'隔開|\n");</p><p>  

32、printf("|請輸入你要計算的兩個數(shù): \n");</p><p>  scanf("%s",&ch); //輸入任意長字符串</p><p>  LinkList() ; </p><p>

33、;  Creat(ch); //把字符串轉(zhuǎn)化為整數(shù),并存到鏈表中//調(diào)用轉(zhuǎn)化函數(shù)</p><p>  Add(); //實現(xiàn)兩個整數(shù)相加//調(diào)用add()加法運算函數(shù)</p><p>  Display(); //輸出結(jié)果//調(diào)用輸出函數(shù)&l

34、t;/p><p>  printf("\n\n是否繼續(xù)計算(Y/N):"); //詢問是否繼續(xù)計算</p><p>  getchar();</p><p>  Yes_No=getchar();</p><p>  } while(Yes_No=='y'||Yes_No==

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論