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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課 程 設(shè) 計(jì)</b></p><p><b>  目 錄</b></p><p>  1 概述………………………………………………………………………3</p><p>  2 設(shè)計(jì)目的…………………………………………………………………3</p><p>  3

2、 設(shè)計(jì)功能說(shuō)明……………………………………………………………3</p><p>  4 詳細(xì)設(shè)計(jì)說(shuō)明……………………………………………………………3</p><p>  5 流程圖……………………………………………………………………4</p><p>  6 調(diào)試及結(jié)果………………………………………………………………5</p><p>

3、  1程序調(diào)試 ………………………………………………………………5</p><p>  2運(yùn)行編譯連接過(guò)程 ………………………………………………… 5-8</p><p>  7 總結(jié)………………………………………………………………………9</p><p>  附錄 …………………………………………………………………10-24</p><p&

4、gt;  參考文獻(xiàn) ………………………………………………………………25</p><p>  成績(jī)?cè)u(píng)定表 ……………………………………………………………26</p><p><b>  1 概 述</b></p><p>  數(shù)據(jù)結(jié)構(gòu)是一門(mén)理論性強(qiáng)、思維抽象、難度較大的課程,是基礎(chǔ)課和專業(yè)課之間的橋梁只有進(jìn)行實(shí)際操作,將理論應(yīng)用于實(shí)際中,才能

5、確實(shí)掌握書(shū)中的知識(shí)點(diǎn)。通過(guò)課程設(shè)計(jì),不僅可以加深學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)基本概念的了解,鞏固學(xué)習(xí)成果,還能夠提高實(shí)動(dòng)手力。為學(xué)生后繼課程的學(xué)習(xí)打下良好的基礎(chǔ)。</p><p><b>  2 設(shè)計(jì)目的</b></p><p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)是在教學(xué)實(shí)踐基礎(chǔ)上進(jìn)行的一次大型實(shí)驗(yàn),也是對(duì)該課程所學(xué)理論知識(shí)的深化和提高。因此,要求學(xué)生能綜合應(yīng)用所學(xué)知識(shí),設(shè)計(jì)與制造出具有較復(fù)

6、雜功能的應(yīng)用系統(tǒng),并且在實(shí)驗(yàn)的基本技能方面上進(jìn)行一次全面的訓(xùn)練。通過(guò)程序的編譯掌握對(duì)程序的調(diào)試方法及思想,并且讓學(xué)生學(xué)會(huì)使用一些編程技巧。促使學(xué)生養(yǎng)成良好的編程習(xí)慣。</p><p>  1.使學(xué)生能夠較全面地鞏固和應(yīng)用課堂中所學(xué)的的基本理論和程序設(shè)計(jì)方法,能夠較熟練地完成程序的設(shè)計(jì)和調(diào)試。</p><p>  2.培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成程序課題的能力。</p>&

7、lt;p>  3.培養(yǎng)學(xué)生勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來(lái)檢驗(yàn)理論,全方位考慮問(wèn)題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。</p><p>  4.提高學(xué)生對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛(ài),協(xié)作攻關(guān)的素質(zhì)。</p><p>  5.培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問(wèn)題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。</p>

8、<p>  6.對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處理問(wèn)題的能力、實(shí)驗(yàn)?zāi)芰Α⒄n程設(shè)計(jì)能力、書(shū)面及口頭表達(dá)能力進(jìn)行考核。</p><p><b>  3 設(shè)計(jì)功能分析</b></p><p><b>  本設(shè)計(jì)的功能如下:</b></p><p>  1、對(duì)于用戶給定的矩陣相乘可以進(jìn)行存儲(chǔ),并且用戶可以更改<

9、;/p><p>  2、根據(jù)用戶的要求可以選擇相應(yīng)的功能加減乘及轉(zhuǎn)置</p><p>  3、然后顯示用戶輸入的矩陣進(jìn)行運(yùn)算并得到結(jié)果后保存到文件</p><p><b>  4 詳細(xì)設(shè)計(jì)說(shuō)明</b></p><p>  本程序用數(shù)據(jù)存儲(chǔ)的方式建立矩陣。然后用相加,減,乘,轉(zhuǎn)置的方式計(jì)算出最終的矩陣</p>&

10、lt;p><b>  5 流程圖</b></p><p><b>  6 調(diào)試及運(yùn)行結(jié)果</b></p><p><b>  1、程序調(diào)試</b></p><p>  1)使用Microsoft visual c++ 編輯軟件進(jìn)行源程序的編寫(xiě)。</p><p>  2)使

11、用Microsoft visual c++軟件進(jìn)行編譯,步驟:?jiǎn)螕簟敖M建”選擇“編譯”。</p><p>  3)使用Microsoft visual c++運(yùn)行程序并調(diào)試,步驟:?jiǎn)螕簟敖M建”選擇“執(zhí)行”。</p><p>  2、運(yùn)行及編譯連接過(guò)程</p><p><b>  1)現(xiàn)在進(jìn)行調(diào)試</b></p><p>

12、<b>  2)下面進(jìn)行編譯</b></p><p><b>  3)開(kāi)始運(yùn)行程序</b></p><p>  4)首先進(jìn)行選擇,先選1號(hào)進(jìn)行加法運(yùn)算</p><p>  這時(shí)候系統(tǒng)會(huì)彈出TXT文本</p><p>  5)做完加法以后,進(jìn)行選擇,選“Y”繼續(xù),然后進(jìn)行減法運(yùn)行</p>

13、<p>  同樣,程序接著把兩個(gè)YXT文本彈出來(lái)</p><p>  6)同樣上面的操作,選擇3,進(jìn)行乘法運(yùn)行</p><p>  在彈出的TXT文本里面輸入矩陣A,關(guān)閉后,在另一個(gè)彈出的TXT中輸入矩陣B</p><p>  最后輸出矩陣B,并彈出結(jié)果的TXT</p><p>  7)最后選擇4,進(jìn)行矩陣轉(zhuǎn)置的調(diào)試</p&

14、gt;<p><b>  轉(zhuǎn)置后的結(jié)果</b></p><p><b>  8)選擇N程序結(jié)束</b></p><p><b>  7 總 結(jié)</b></p><p>  課程設(shè)計(jì)終于做完了,雖然有些疲勞和困倦,但也讓我收獲了很多。數(shù)據(jù)結(jié)構(gòu)已經(jīng)學(xué)了一個(gè)學(xué)期,有許多知識(shí)都存在似懂非懂的現(xiàn)

15、象,這種現(xiàn)象通過(guò)實(shí)際的上機(jī)操作,實(shí)際應(yīng)用,已經(jīng)減少了許多。對(duì)這些知識(shí)也有了更深的理解和很好的掌握。許多困惑,有許多已經(jīng)通過(guò)實(shí)際操作解決了,并能夠深刻認(rèn)識(shí)。通過(guò)課程設(shè)計(jì),明白到了原來(lái)開(kāi)發(fā)一個(gè)小小的實(shí)用系統(tǒng),是需要考慮到很多方面的問(wèn)題的,這些都是要在實(shí)踐中摸索的,這與平時(shí)做練習(xí)是不同的,但也因?yàn)槠綍r(shí)有許多的練習(xí)基礎(chǔ),會(huì)使你做起程序來(lái),更加得心應(yīng)手。另外就是要把錯(cuò)誤總結(jié),有許多錯(cuò)誤是平時(shí)自己一手制造的,因此很深刻,但也有些錯(cuò)誤是自己還沒(méi)有接觸

16、的,這就應(yīng)該看多些有關(guān)的書(shū)記以及別人的總結(jié),使自己不犯這些錯(cuò)誤。這樣長(zhǎng)期總結(jié),會(huì)對(duì)自己有很大的幫助。</p><p><b>  附 錄</b></p><p><b>  實(shí)現(xiàn)的程序代碼: </b></p><p>  #include<iostream></p><p>  #in

17、clude <stdio.h></p><p>  #include <stdlib.h></p><p>  using namespace std;</p><p>  #include"void Transposition.h"</p><p>  #include"void Mat

18、rixMutiply.h"</p><p>  /* 給 int 類型定義別名 datatype */</p><p>  typedef int datatype;</p><p>  /* 函數(shù)聲明部分 */</p><p>  datatype** Create(int m, int n);</p><p&

19、gt;  void Reset(datatype**, int, int);</p><p>  void Input(datatype**, int, int);</p><p>  void Output(datatype**, int, int);</p><p>  void Summation(datatype**, datatype**, datatyp

20、e**);</p><p>  void Subtraction(datatype**, datatype**, datatype**);</p><p>  void MatrixFree(datatype** , int);</p><p>  /* 定義三個(gè)矩陣的行列大小 */</p><p>  int row_a, col_a;&l

21、t;/p><p>  int row_b, col_b;</p><p>  int row_c, col_c;</p><p>  /* 定義文件指針 */</p><p><b>  FILE *fp;</b></p><p>  int main()</p><p>&l

22、t;b>  {</b></p><p><b>  {</b></p><p>  system("color 1c");</p><p><b>  }</b></p><p>  datatype **a, **b, **c, **d;</p>

23、<p>  printf(" ###########################################\n"); </p><p>  printf(" ##### 歡迎您使用矩陣系統(tǒng) ######\n"); </p><p>  print

24、f(" ##### 系統(tǒng)功能: ######\n"); </p><p>  printf(" ##### 計(jì)算兩個(gè)矩陣相加,相減; ######\n"); </p><p>  printf("

25、 ##### 矩陣相乘;矩陣轉(zhuǎn)置 ######\n"); </p><p>  printf(" ###########################################\n"); </p><p>  printf(" ## 請(qǐng)選擇您需要的運(yùn)算,

26、按回車(chē)鍵結(jié)束 ##\n"); </p><p>  printf(" ###########################################\n"); </p><p>  printf(" ########### 1:矩陣相加 ###########

27、\n"); </p><p>  printf(" ########### 2:矩陣相減 ###########\n"); </p><p>  printf(" ########### 3:矩陣相乘 ###########\n"); </

28、p><p>  printf(" ########### 4:矩陣轉(zhuǎn)置 ###########\n"); </p><p>  printf(" ###########################################\n"); </p><p

29、>  char flag;</p><p><b>  do</b></p><p><b>  {</b></p><p><b>  int x; </b></p><p>  cout<<" 請(qǐng)輸入要

30、操作的選項(xiàng)(1--4):";</p><p><b>  cin>>x;</b></p><p>  switch (x)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>

31、<b>  {</b></p><p>  /* 進(jìn)行矩陣加法運(yùn)算 */</p><p>  Summation(a, b, c);</p><p><b>  };break; </b></p><p><b>  case 2: </b></p><p&

32、gt;<b>  { </b></p><p>  /* 進(jìn)行矩陣減法運(yùn)算 */</p><p>  Subtraction(a, b, c);</p><p><b>  };break; </b></p><p><b>  case 3: </b></p>

33、<p><b>  { </b></p><p>  /* 進(jìn)行矩陣乘法運(yùn)算 */</p><p>  MatrixMutiply();</p><p><b>  };break; </b></p><p><b>  case 4:</b></p>

34、<p><b>  {</b></p><p>  /* 進(jìn)行矩陣轉(zhuǎn)置運(yùn)算 */</p><p>  Transposition();</p><p><b>  };break; </b></p><p>  default : cout<<"無(wú)此選項(xiàng)請(qǐng)確定后再輸入

35、!"<<endl;</p><p><b>  break;</b></p><p><b>  } </b></p><p>  cout<<"是否繼續(xù)操作?(y/n)"<<endl;</p><p>  cin>>fl

36、ag;</p><p>  }while (flag=='y'||flag=='Y');</p><p><b>  }</b></p><p>  /* 為矩陣動(dòng)態(tài)分配內(nèi)存的函數(shù) */</p><p>  datatype** Create(int m, int n)</p>

37、<p><b>  {</b></p><p><b>  int i;</b></p><p>  datatype **Matrix;</p><p>  Matrix = (datatype **) malloc(sizeof(datatype *) * m);</p><p>

38、  for(i = 0; i < m; i++)</p><p><b>  {</b></p><p>  Matrix[i] = (datatype *) malloc(sizeof(datatype) * n);</p><p><b>  }</b></p><p>  return

39、Matrix;</p><p><b>  }</b></p><p>  /* 初始化矩陣函數(shù) */</p><p>  void Reset(datatype** Matrix, int m, int n)</p><p><b>  {</b></p><p><

40、b>  int i,j;</b></p><p>  for(i = 0; i < m; i++)</p><p><b>  {</b></p><p>  for(j = 0; j < n; j++)</p><p><b>  {</b></p>&

41、lt;p>  Matrix[i][j] = 0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /* 讀入數(shù)據(jù)函數(shù) */</p><p>  void I

42、nput(datatype** Matrix, int m, int n)</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  for(i = 0; i < m; i++)</p><p><b>  {</b>

43、;</p><p>  for(j = 0; j < n; j++)</p><p><b>  {</b></p><p>  fscanf(fp,"%d", &Matrix[i][j]);</p><p><b>  }</b></p><p

44、><b>  }</b></p><p><b>  }</b></p><p>  /* 輸出數(shù)據(jù)函數(shù) */</p><p>  void Output(datatype** Matrix, int m, int n)</p><p><b>  {</b></p

45、><p><b>  int i,j;</b></p><p>  for(i = 0; i < m; i++)</p><p><b>  {</b></p><p>  for(j = 0; j < n; j++)</p><p><b>  {<

46、/b></p><p>  fprintf(fp,"%4d ", Matrix[i][j]);</p><p><b>  }</b></p><p>  fprintf(fp,"\n");</p><p><b>  }</b></p>

47、<p><b>  }</b></p><p>  /* 釋放矩陣內(nèi)存函數(shù) */</p><p>  void MatrixFree(datatype** Matrix, int m)</p><p><b>  {</b></p><p><b>  int i;</b&

48、gt;</p><p>  for(i = 0; i < m; i++)</p><p><b>  {</b></p><p>  free(Matrix[i]);</p><p><b>  }</b></p><p>  free(Matrix);</p&g

49、t;<p><b>  }</b></p><p>  /* 矩陣加法運(yùn)算函數(shù) */</p><p>  void Summation(datatype** a, datatype** b, datatype** c)</p><p><b>  {</b></p><p><b

50、>  int i,j;</b></p><p>  /* 以只讀方式打開(kāi)輸入文件 in.txt */</p><p>  if((fp = fopen("in.txt","r")) == NULL)</p><p><b>  {</b></p><p>  pr

51、intf("Cannot open this file.\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  /* 創(chuàng)建并讀入矩陣a */</p><p>  fscanf(fp,"%d%d&quo

52、t;, &row_a, &col_a);</p><p>  a=Create(row_a, col_a);</p><p>  Input(a,row_a, col_a);</p><p>  printf("***** 矩陣A *****\n");</p><p>  for(i=0;i<ro

53、w_a;i++)</p><p><b>  {</b></p><p>  for(j=0;j<col_a;j++)</p><p>  printf("%4d",a[i][j]); //實(shí)數(shù)格式</p><p>  printf("\n");<

54、;/p><p><b>  }</b></p><p>  /* 創(chuàng)建并讀入矩陣b */</p><p>  fscanf(fp,"%d%d", &row_b, &col_b);</p><p>  b = Create(row_b, col_b);</p><p>

55、;  Input(b,row_b, col_b);</p><p><b>  //輸出矩陣b</b></p><p>  printf("***** 矩陣B *****\n");</p><p>  for(i=0;i<row_b;i++)</p><p><b>  {<

56、/b></p><p>  for(j=0;j<col_b;j++)</p><p>  printf("%4d",b[i][j]); //實(shí)數(shù)格式</p><p>  printf("\n");</p><p><b>  }</b></

57、p><p>  /* 判斷兩個(gè)矩陣能否相加 */</p><p>  if(row_a == row_b && col_a == col_b)</p><p><b>  {</b></p><p>  row_c = row_a;</p><p>  col_c = col_b;&l

58、t;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("Matrix Can't Mutiply !\n");</p><p&

59、gt;  fprintf(fp,"Matrix Can't Mutiply !\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  /* 關(guān)閉輸入文件 */</p><p>  fclose(fp);

60、</p><p>  /* 以寫(xiě)入方式打開(kāi)輸出文件 out.txt */</p><p>  if((fp = fopen("out.txt","w")) == NULL)</p><p><b>  {</b></p><p>  printf("Cannot open

61、 this file.\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  /* 創(chuàng)建并初始化結(jié)果矩陣c */</p><p>  c = Create(row_c, col_c);</p><p&

62、gt;  Reset(c, row_c, col_c);</p><p>  for(i=0;i<row_c;i++)</p><p><b>  {</b></p><p>  for(j=0;j<col_c;j++)</p><p><b>  {</b></p>&l

63、t;p>  c[i][j]=a[i][j]+b[i][j];</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //矩陣加法</b></p><p>  printf("***** 矩陣加法 ****

64、*\n");</p><p>  for(i=0;i<row_a;i++)</p><p><b>  {</b></p><p>  for(j=0;j<col_b;j++)</p><p>  printf("%4d",c[i][j]); //實(shí)數(shù)格式

65、</p><p>  printf("\n");</p><p><b>  }</b></p><p>  /* 輸出結(jié)果矩陣C */</p><p>  Output(c, row_c, col_c);</p><p>  /* 關(guān)閉輸入文件 */</p>&

66、lt;p>  fclose(fp);</p><p>  system("in.txt");</p><p>  /* 關(guān)閉輸出文件 */</p><p>  fclose(fp);</p><p>  system("out.txt");</p><p>  /* 釋放矩

67、陣內(nèi)存 */</p><p>  MatrixFree(a,row_a);</p><p>  MatrixFree(b,row_b);</p><p>  MatrixFree(c,row_c);</p><p><b>  }</b></p><p>  /* 矩陣減法運(yùn)算函數(shù) */</

68、p><p>  void Subtraction(datatype** a, datatype** b, datatype** c)</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  /* 以只讀方式打開(kāi)輸入文件 in.txt */<

69、/p><p>  if((fp = fopen("in.txt","r")) == NULL)</p><p><b>  {</b></p><p>  printf("Cannot open this file.\n");</p><p><b>  

70、exit(0);</b></p><p><b>  }</b></p><p>  /* 創(chuàng)建并讀入矩陣a */</p><p>  fscanf(fp,"%d%d", &row_a, &col_a);</p><p>  a=Create(row_a, col_a);&

71、lt;/p><p>  Input(a,row_a, col_a);</p><p>  printf("***** 矩陣A *****\n");</p><p>  for(i=0;i<row_a;i++)</p><p><b>  {</b></p><p>  f

72、or(j=0;j<col_a;j++)</p><p>  printf("%4d",a[i][j]); //實(shí)數(shù)格式</p><p>  printf("\n");</p><p><b>  }</b></p><p>  /* 創(chuàng)建并讀入矩陣b

73、*/</p><p>  fscanf(fp,"%d%d", &row_b, &col_b);</p><p>  b = Create(row_b, col_b);</p><p>  Input(b,row_b, col_b);</p><p><b>  //輸出矩陣b</b>&

74、lt;/p><p>  printf("***** 矩陣B *****\n");</p><p>  for(i=0;i<row_b;i++)</p><p><b>  {</b></p><p>  for(j=0;j<col_b;j++)</p><p>  

75、printf("%4d",b[i][j]); //實(shí)數(shù)格式</p><p>  printf("\n");</p><p><b>  }</b></p><p>  /* 判斷兩個(gè)矩陣能否相減 */</p><p>  if(row_a == row_b

76、&& col_a == col_b)</p><p><b>  {</b></p><p>  row_c = row_a;</p><p>  col_c = col_b;</p><p><b>  }</b></p><p><b>  el

77、se</b></p><p><b>  {</b></p><p>  printf("Matrix Can't Mutiply !\n");</p><p>  fprintf(fp,"Matrix Can't Mutiply !\n");</p><p

78、><b>  exit(0);</b></p><p><b>  }</b></p><p>  /* 關(guān)閉輸入文件 */</p><p>  fclose(fp);</p><p>  /* 以寫(xiě)入方式打開(kāi)輸出文件 out.txt */</p><p>  if((

79、fp = fopen("out.txt","w")) == NULL)</p><p><b>  {</b></p><p>  printf("Cannot open this file.\n");</p><p><b>  exit(0);</b><

80、/p><p><b>  }</b></p><p>  /* 創(chuàng)建并初始化結(jié)果矩陣c */</p><p>  c = Create(row_c, col_c);</p><p>  Reset(c, row_c, col_c);</p><p>  for(i = 0; i < row_c;

81、 i++)</p><p><b>  {</b></p><p>  for(j = 0; j < col_c; j++)</p><p><b>  {</b></p><p>  c[i][j] = a[i][j] - b[i][j];</p><p><b

82、>  }</b></p><p><b>  }</b></p><p><b>  //矩陣減法</b></p><p>  printf("***** 矩陣減法 *****\n");</p><p>  for(i=0;i<row_a;i++)&

83、lt;/p><p><b>  {</b></p><p>  for(j=0;j<col_b;j++)</p><p>  printf("%4d",c[i][j]); //實(shí)數(shù)格式</p><p>  printf("\n");</p>&

84、lt;p><b>  }</b></p><p>  /* 輸出結(jié)果矩陣C */</p><p>  Output(c, row_c, col_c);</p><p>  system("in.txt");</p><p>  /* 關(guān)閉輸出文件 */</p><p> 

85、 fclose(fp);</p><p>  system("out.txt");</p><p>  /* 釋放矩陣內(nèi)存 */</p><p>  MatrixFree(a,row_a);</p><p>  MatrixFree(b,row_b);</p><p>  MatrixFree(c,

86、row_c);</p><p><b>  }</b></p><p><b>  矩陣乘法的分代碼:</b></p><p>  #include "stdio.h"</p><p>  void MatrixMutiply()</p><p><

87、b>  {</b></p><p>  int m,g,f,n;</p><p>  int i,j,k;</p><p>  printf("\n請(qǐng)輸入矩陣A的行數(shù)和列數(shù)( >0 ):\n");</p><p>  scanf("%d%d",&m,&g);<

88、;/p><p>  printf("請(qǐng)輸入矩陣B的行數(shù)和列數(shù)( >0 ):\n");</p><p>  scanf("%d%d",&f,&n);</p><p>  if(f==g) //判斷能否相乘</p><p><b>  {</b><

89、;/p><p><b>  //矩陣a </b></p><p>  FILE *fpa;</p><p>  printf("請(qǐng)輸入矩陣A的元素\n");</p><p>  system("cheng-a.txt"); </p><p>  fpa=fo

90、pen("cheng-a.txt","r"); //讀文件cheng-a.txt</p><p>  if(fpa==NULL)</p><p><b>  {</b></p><p>  printf("文件寫(xiě)打開(kāi)失敗");</p><p>

91、<b>  exit (0);</b></p><p><b>  }</b></p><p>  double **a=NULL;/*二級(jí)指針用來(lái)代表一個(gè)二維數(shù)組,在聲明指針的時(shí)候?qū)⑵滟x值為NULL;</p><p>  釋放后再賦值為NULL在一些進(jìn)行有效性判斷的地方用a==NULL來(lái)判斷指針是否為空指針*/&

92、lt;/p><p>  a=(double**)malloc(m*sizeof(double*));/*這句是動(dòng)態(tài)定義二維數(shù)組的行數(shù)。</p><p>  新的標(biāo)準(zhǔn)ANSI C規(guī)定malloc函數(shù)的返回值類型為void型,所以需要強(qiáng)制轉(zhuǎn)化為double型的指針后才能賦給a。*/</p><p>  for(i=0;i<m;i++)</p><p

93、>  a[i]=(double*)malloc(g*sizeof(double));/*這句是動(dòng)態(tài)定義二維數(shù)組的列數(shù)。*/</p><p>  for(i=0;i<m;i++) </p><p>  for(j=0;j<g;j++)</p><p>  fscanf(fpa,"%lf",&a[i

94、][j]); //從文件讀取數(shù)據(jù)</p><p>  fclose(fpa);</p><p><b>  //輸出矩陣A</b></p><p>  printf("***** 矩陣A *****\n");</p><p>  for(i=0;i<m;i++)<

95、/p><p><b>  {</b></p><p>  for(j=0;j<g;j++)</p><p>  printf("%g\t",a[i][j]); //實(shí)數(shù)格式</p><p>  printf("\n");</p><p&

96、gt;<b>  }</b></p><p><b>  //矩陣B</b></p><p>  FILE *fpb;</p><p>  printf("請(qǐng)輸入矩陣B的元素\n");</p><p>  system("cheng-b.txt"); &l

97、t;/p><p>  fpb=fopen("cheng-b.txt","r");</p><p>  if(fpb==NULL)</p><p><b>  {</b></p><p>  printf("文件寫(xiě)打開(kāi)失敗");</p><p>

98、;<b>  exit (0);</b></p><p><b>  }</b></p><p>  double **b=NULL;</p><p>  b=(double**)malloc(g*sizeof(double *));</p><p>  for(i=0;i<f;i++)<

99、;/p><p>  b[i]=(double*)malloc(n*sizeof(double));</p><p>  for(i=0;i<f;i++)</p><p>  for(j=0;j<n;j++)</p><p>  fscanf(fpb,"%lf",&b[i][j]);</p>&

100、lt;p>  fclose(fpb);</p><p><b>  //輸出矩陣B</b></p><p>  printf("***** 矩陣B *****\n");</p><p>  for(i=0;i<f;i++)</p><p><b>  {</b>&

101、lt;/p><p>  for(j=0;j<n;j++)</p><p>  printf("%g\t",b[i][j]); //實(shí)數(shù)格式</p><p>  printf("\n");</p><p><b>  }</b></p><

102、;p><b>  //矩陣相乘</b></p><p>  printf("***** 矩陣乘法 *****\n");</p><p>  double **result=NULL;/*存放計(jì)算結(jié)果的二維數(shù)組*/</p><p>  result=(double**)malloc(m*sizeof(double*)

103、);</p><p>  for(i=0;i<m;i++)</p><p>  result[i]=(double*)malloc(n*sizeof(double));</p><p>  for(i=0;i<m;i++)</p><p>  for(j=0;j<n;j++)</p><p>  re

104、sult[i][j]=0;/*初始化為0*/</p><p>  for(i=0;i<m;i++)</p><p>  for(j=0;j<n;j++)</p><p>  for(k=0;k<g;k++)</p><p>  result[i][j]+=a[i][k]*b[k][j];</p><p&g

105、t;  //屏幕輸出矩陣乘法</p><p>  for(i=0;i<m;i++)</p><p><b>  {</b></p><p>  for(j=0;j<n;j++)</p><p>  printf("%g\t",result[i][j]); //實(shí)數(shù)格式

106、</p><p>  printf("\n");</p><p><b>  }</b></p><p>  //屏幕輸出矩陣乘法</p><p>  FILE *fpc;</p><p>  fpc=fopen("cheng-c.txt","wb

107、");</p><p>  if(fpc==NULL)</p><p><b>  {</b></p><p>  printf("文件打開(kāi)失敗");</p><p><b>  exit(0);</b></p><p><b>  }

108、</b></p><p>  for(i=0;i<m;i++)</p><p><b>  {</b></p><p>  for(j=0;j<n;j++)</p><p>  fprintf(fpc,"%g\t",result[i][j]);</p><p

109、>  fprintf(fpc,"\r\n" ); //文件中換行</p><p><b>  }</b></p><p>  fclose(fpc);</p><p>  system("cheng-c.txt"); </p><p><b>  

110、//釋放</b></p><p>  for(i=0;i<m;i++)/*釋放之前分配的空間是一個(gè)好習(xí)慣*/</p><p><b>  {</b></p><p>  free(a[i]);</p><p>  a[i]=NULL;</p><p>  free(result[

111、i]);</p><p>  result[i]=NULL;/*將之前分配的內(nèi)存空間釋放后,把指針置0是一個(gè)好的習(xí)慣*/</p><p><b>  }</b></p><p><b>  free(a);</b></p><p><b>  a=NULL;</b></p

112、><p>  free(result);</p><p>  result=NULL;</p><p>  for(i=0;i<f;i++)</p><p><b>  {</b></p><p>  free(b[i]);</p><p>  b[i]=NULL;<

113、;/p><p><b>  }</b></p><p><b>  free(b);</b></p><p><b>  b=NULL;</b></p><p><b>  }</b></p><p><b>  else

114、</b></p><p>  printf("\n\t\t***** 輸入有誤,請(qǐng)重新輸入 *****\n\n");</p><p><b>  }</b></p><p><b>  矩陣轉(zhuǎn)置的分代碼:</b></p><p>  #include "

115、stdio.h"</p><p>  void Transposition()</p><p><b>  {</b></p><p><b>  int m,g;</b></p><p><b>  int i,j;</b></p><p>

116、  printf("請(qǐng)輸入矩陣的行數(shù)和列數(shù)( >0 ):\n");</p><p>  scanf("%d%d",&m,&g);</p><p><b>  //矩陣 </b></p><p>  FILE *fpa;</p><p>  printf(&

117、quot;請(qǐng)輸入矩陣的元素\n\n\n");</p><p>  system("zhuanzhi-a.txt"); </p><p>  fpa=fopen("zhuanzhi-a.txt","r"); //讀文件zhuanzhi-a.txt</p><p>  if(fpa=

118、=NULL)</p><p><b>  {</b></p><p>  printf("文件寫(xiě)打開(kāi)失敗");</p><p><b>  exit (0);</b></p><p><b>  }</b></p><p> 

119、 double **a=NULL;/*二級(jí)指針用來(lái)代表一個(gè)二維數(shù)組,在聲明指針的時(shí)候?qū)⑵滟x值為NULL;</p><p>  釋放后再賦值為NULL在一些進(jìn)行有效性判斷的地方用a==NULL來(lái)判斷指針是否為空指針*/</p><p>  a=(double**)malloc(m*sizeof(double*));/*這句是動(dòng)態(tài)定義二維數(shù)組的行數(shù)。</p><p> 

120、 新的標(biāo)準(zhǔn)ANSI C規(guī)定malloc函數(shù)的返回值類型為void型,所以需要強(qiáng)制轉(zhuǎn)化為double型的指針后才能賦給a。*/</p><p>  for(i=0;i<m;i++)</p><p>  a[i]=(double*)malloc(g*sizeof(double));/*這句是動(dòng)態(tài)定義二維數(shù)組的列數(shù)。*/</p><p>  for(i=0;i&

121、lt;m;i++) </p><p>  for(j=0;j<g;j++)</p><p>  fscanf(fpa,"%lf",&a[i][j]); //從文件讀取數(shù)據(jù)</p><p>  fclose(fpa);</p><p><b>  //屏幕

122、輸出矩陣</b></p><p>  printf("***** 矩陣 *****\n");</p><p>  for(i=0;i<m;i++)</p><p><b>  {</b></p><p>  for(j=0;j<g;j++)</p><p

123、>  printf("%g\t",a[i][j]); //實(shí)數(shù)格式</p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  //轉(zhuǎn)置矩陣</b></p><p>  pr

124、intf("***** 轉(zhuǎn)置矩陣 *****\n");</p><p>  double **result=NULL;/*存放計(jì)算結(jié)果的二維數(shù)組*/</p><p>  result=(double**)malloc(m*sizeof(double*));</p><p>  for(i=0;i<g;i++)</p>&l

125、t;p>  result[i]=(double*)malloc(g*sizeof(double));</p><p>  for(i=0;i<g;i++)</p><p>  for(j=0;j<m;j++)</p><p>  result[i][j]=0;/*初始化為0*/</p><p>  for(i=0;i<

126、g;i++) </p><p>  for(j=0;j<m;j++)</p><p>  result[i][j]=a[j][i];</p><p>  //屏幕輸出轉(zhuǎn)置矩陣</p><p>  for(i=0;i<g;i++)</p><p><b>  {</b><

127、/p><p>  for(j=0;j<m;j++)</p><p>  printf("%g\t",result[i][j]);</p><p>  printf("\n");</p><p><b>  }</b></p><p>  //文件輸出轉(zhuǎn)置

128、矩陣</p><p>  FILE *fpc;</p><p>  fpc=fopen("zhuanzhi-c.txt","wb");</p><p>  if(fpc==NULL)</p><p><b>  {</b></p><p>  printf(

129、"文件打開(kāi)失敗");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  for(i=0;i<g;i++)</p><p><b>  {</b></p><p> 

130、 for(j=0;j<m;j++)</p><p>  fprintf(fpc,"%g\t",result[i][j]);</p><p>  fprintf(fpc,"\r\n" );</p><p><b>  }</b></p><p>  fclose(fpc);&l

131、t;/p><p>  system("zhuanzhi-c.txt"); </p><p><b>  //釋放</b></p><p>  for(i=0;i<m;i++)/*釋放之前分配的空間是一個(gè)好習(xí)慣*/</p><p><b>  {</b></p>&

132、lt;p>  free(a[i]);</p><p>  a[i]=NULL;</p><p><b>  }</b></p><p>  for(i=0;i<g;i++)</p><p><b>  {</b></p><p>  free(result[i])

133、;</p><p>  result[i]=NULL;/*將之前分配的內(nèi)存空間釋放后,把指針置0是一個(gè)好的習(xí)慣*/</p><p><b>  }</b></p><p><b>  free(a);</b></p><p><b>  a=NULL;</b></p&

134、gt;<p><b>  }</b></p><p><b>  參考文獻(xiàn)</b></p><p><b>  教材:</b></p><p>  [1] 蘇仕民.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 北京:機(jī)械工業(yè)出版社.2005</p><p>  [2] C++面向?qū)ο?/p>

135、程序設(shè)計(jì)教程/陳維興,林小茶編著 北京:清華大學(xué)出版社,2009.6</p><p>  [3] C語(yǔ)言版/嚴(yán)蔚敏,吳偉民 北京:清華大學(xué)出版社,2007</p><p>  [4] 徐孝凱.數(shù)據(jù)結(jié)構(gòu)實(shí)用教程(C/C++描述)[M]. (第一版)北京:清華大學(xué)出版社.1999</p><p>  [5] 陳慧南.數(shù)據(jù)結(jié)構(gòu)(使用C++語(yǔ)言描述)[M]. (第

溫馨提示

  • 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論