數(shù)字排序的設(shè)計與實現(xiàn)c語言課程設(shè)計報告_第1頁
已閱讀1頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 前言1</b></p><p><b>  2 需求分析1</b></p><p>  2.1 課程設(shè)計目的1</p><p>  2.2 課程設(shè)計任務(wù)1</p><p&g

2、t;  2.3 設(shè)計環(huán)境1</p><p>  2.4 開發(fā)語言1</p><p><b>  3 分析和設(shè)計2</b></p><p>  3.1 模塊設(shè)計2</p><p>  3.2 系統(tǒng)流程圖2</p><p>  3.3 主要模塊的流程圖3</p><p&

3、gt;  4 具體代碼實現(xiàn)5</p><p>  5 課程設(shè)計總結(jié)7</p><p>  5.1 程序運行結(jié)果7</p><p>  5.2 課程設(shè)計體會8</p><p><b>  參考文獻9</b></p><p><b>  致 謝9</b></p

4、><p><b>  1 前言</b></p><p>  編寫一個程序來處理數(shù)字排序問題。分別通過直接插入算法和選擇排序算法將一組數(shù)字按降序排列,然后輸出排列好的數(shù)字以及排序中數(shù)字交換的次數(shù)。任意輸入一組數(shù)字,結(jié)果顯示在屏幕上。</p><p><b>  2 需求分析</b></p><p>  2

5、.1 課程設(shè)計目的</p><p>  運用所學課程的知識來研究、解決一些具有一定綜合性問題的專業(yè)課題。通過課程設(shè)計(論文),提高學生綜合運用所學知識來解決實際問題、使用文獻資料、及進行科學實驗或技術(shù)設(shè)計的初步能力,為畢業(yè)設(shè)計(論文)打基礎(chǔ)。對于本課程設(shè)計而言,重點在熟悉C語言基本語法規(guī)范以及靈活運用C語言編程解決實際問題。</p><p>  2.2 課程設(shè)計任務(wù)</p>

6、<p>  編寫算法實現(xiàn)猜數(shù)字排序:</p><p>  1.輸入10個數(shù)字,并選擇排序方式(至少兩種不同的排序方法)</p><p>  2.按從大到小輸出數(shù)字,以及排序中數(shù)字交換的次數(shù)。</p><p><b>  2.3 設(shè)計</b></p><p><b>  環(huán)境</b><

7、/p><p> ?。?)WINDOWS 2000/2003/XP/7/Vista系統(tǒng)</p><p>  (2)Visual C++或TC集成開發(fā)環(huán)境</p><p><b>  2.4 開發(fā)語言</b></p><p><b>  C語言</b></p><p><b&g

8、t;  3 分析和設(shè)計</b></p><p><b>  3.1 模塊設(shè)計</b></p><p>  在主函數(shù)中,調(diào)用兩個子函數(shù)來分別實現(xiàn)直接插入法排序和選擇法排序。</p><p>  定義一個函數(shù)aa( ),用直接插入法對數(shù)組a中的數(shù)進行排序。首先,按要求輸入數(shù)據(jù)。接著,利用雙重for循環(huán),其中外重循環(huán)是對中間變量temp

9、和計數(shù)變量count進行賦值,從第一個數(shù)起依次賦給temp,然后在內(nèi)重循環(huán)中把temp與前一數(shù)比較,temp小則交換,以此向后推。最后,輸出排序好的新數(shù)組a以及排序次數(shù)。</p><p>  定義一個函數(shù)bb( ),用選擇法對數(shù)組a中的數(shù)進行排序。首先,根據(jù)提示信息依次輸入數(shù)據(jù)。接著,利用雙重for循環(huán),其中外重循環(huán)控制中間變量max的賦值操作(max保存最大數(shù)的下標),而在內(nèi)重循環(huán)中,用max作下標所代表的數(shù)

10、與之后的每一個數(shù)作比較,max小則交換。最后,輸出排序好的數(shù)組a以及排序次數(shù)。</p><p><b>  3.2 系統(tǒng)流程圖</b></p><p>  圖3.1 系統(tǒng)流程圖</p><p>  3.3 主要模塊的流程圖</p><p>  函數(shù)aa()運用直接插入法排序流程圖如下:</p><p

11、>  函數(shù)bb()選擇法排序流程圖如下:</p><p><b>  4 具體代碼實現(xiàn)</b></p><p>  #include<iostream></p><p>  #include<stdio.h> </p><p>  #define N 10 </p><p

12、>  void aa(); /*直接排序法*/</p><p>  void bb(); /*選擇排序法*/</p><p>  /*****主函數(shù)*****/</p><p>  void main() </p><p><b>  {</b></p><p>  

13、printf("*****用直接法和選擇法排序*****\n");</p><p><b>  aa();</b></p><p><b>  bb(); </b></p><p><b>  }</b></p><p>  /*******子函數(shù)****

14、***/</p><p>  using namespace std;</p><p>  void aa() /*直接排序法*/</p><p>  {int i,j,a[10];</p><p><b>  int k;</b></p><p><b>  int tem

15、p;</b></p><p>  int count=0;</p><p>  printf("please input ten num:\n");</p><p>  for(i=0;i<10;i++)</p><p>  scanf("%d",&a[i]);</p&g

16、t;<p>  for(i = 1;i<10;++i)</p><p><b>  {count++;</b></p><p>  temp = a[i];</p><p>  for(j=i;j>0&&temp>a[j-1];--j)</p><p>  { a[j

17、]=a[j-1]; } </p><p>  a[j]=temp;</p><p>  printf("%3d:",count);</p><p>  for(j=1;j<=10;j++) printf("%5d",a[j]);</p><p>  printf("\n"

18、);</p><p><b>  }</b></p><p>  printf("the result is:\n");</p><p>  for(k=0;k<N;++k) /*輸出結(jié)果*/</p><p>  cout<<a[k]<<" "

19、; </p><p>  cout<<endl; </p><p><b>  }</b></p><p>  void bb() /*選擇排序*/</p><p>  { int i,j,max,tem,a[N];</p><p>  int count=0;<

20、;/p><p>  printf("please input ten num:\n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  printf("a[%d]=",i);</p><p&g

21、t;  scanf("%d",&a[i]);}</p><p>  printf("\n");</p><p>  for(i=0;i<N;i++)</p><p>  printf("%5d",a[i]);</p><p>  printf("\n"

22、;);</p><p>  for(i=0;i<N-1;i++) </p><p>  {count++; max=i; /*從第一個數(shù)起,把下標賦給max,然后用max進行比較*/</p><p>  for(j=i+1;j<N;j++) </p><p>  if(a[max]<a[j]) max=j; /*前一

23、個數(shù)依次與后面的數(shù)比較,小就交換*/</p><p>  {tem=a[i];</p><p>  a[i]=a[max]; </p><p>  a[max]=tem;} /*進行交換*/</p><p>  printf("%3d:",count); </p><p>  for(j=1;

24、j<=10;j++)</p><p>  printf("%4d",a[j]); printf("\n"); /*輸出結(jié)果*/</p><p><b>  } </b></p><p>  printf("After sorted \n"); </p>&

25、lt;p>  for(i=0;i<N;i++) printf("%5d",a[i]); }</p><p><b>  5 課程設(shè)計總結(jié)</b></p><p>  5.1 程序運行結(jié)果 </p><p>  從鍵盤輸入10個數(shù)據(jù),利用直接排序法對這10個數(shù)據(jù)進行處理,輸出每個數(shù)據(jù)每次交換的次數(shù),最后輸出已排好序

26、結(jié)果。如圖5.1所示</p><p>  圖5.1 直接法排序運行結(jié)果</p><p>  根據(jù)屏幕提示,依次從鍵盤輸入10個數(shù)據(jù)保存到數(shù)組a中并輸出,然后采用選擇排序法對數(shù)據(jù)進行處理,并輸出每個數(shù)據(jù)每次交換的次數(shù),最后輸出已排好序結(jié)果。如圖5.2所示</p><p>  圖5.2 選擇法排序運行結(jié)果</p><p>  5.2 課程設(shè)

27、計體會</p><p>  忙碌了一個多星期,在大家的共同努力下,我們總算將此程序設(shè)計出來。盡管不是自己獨立完成,但仍然很高興,因為在設(shè)計的過程中,讓我了解到要設(shè)計一個程序,查找資料是至關(guān)重要的,在他人的基礎(chǔ)上,再根據(jù)自己所學進行修改與調(diào)試,最后設(shè)計出自己想要的程序,這過程艱辛,但只要你持之以恒,成功指日可待。</p><p>  另外平時扎實的基礎(chǔ)也很關(guān)鍵,因為如果你平時學得就不怎么樣,

28、那么你面對這么一個比較有難度的程序,你可能會望而卻步,看他人的程序都是個難點,更別說讓你自己去設(shè)計。為了解此類問題,最好就是多向同學,老師請教,不要怕難為情。</p><p>  在設(shè)計這個程序時,我們剛開始是根據(jù)網(wǎng)上查找的資料,通過平時所學的知識將程序代碼進行編寫,經(jīng)過反復(fù)修改使得程序成果運行。在這過程中我們遇到了很多問題,也請教了很多同學,當我們的程序終于可以運行時,我們又發(fā)現(xiàn)了新的問題。因為我們所做的程序是

29、需要兩種排序算法,而我們編寫的時這兩個算法分別的代碼,而我們需要將這兩個子程序合并成為一個程序。還好手頭有類似的資料,經(jīng)過自己的反復(fù)嘗試以及與與同學的討論,最好還是被我們完成了。</p><p>  從這一個多星期的設(shè)計過程中,我看到了大家的拼搏與努力,也讓我知道團隊精神得難能可貴,盡管一年下來大家不怎么有多大接觸,但是彼此之間的友誼已經(jīng)在我們心里扎根生底,在遇到問題時,我們會共同進退,每個人都很慷慨的將自己艱辛

30、勞動設(shè)計出來的東西與同學們分享。</p><p>  總之,這次設(shè)計程序讓我受益良多,我會好好珍惜像這種難得的機會。</p><p><b>  參考文獻</b></p><p>  [1]黃同成,周紅波.程序設(shè)計基礎(chǔ)教程(C語言).湖南人民出版社,2011.</p><p>  [2]黃同成,黃磊.程序設(shè)計實踐教程(C

31、語言).湖南人民出版社,2011.</p><p>  [3]譚浩強.C程序設(shè)計(第三版)[M].北京:清華大學出版社,2005.</p><p><b>  致 謝</b></p><p>  首先,我要感謝老師在課程設(shè)計上給予我的指導(dǎo)、提供給我的支持和幫助,這是我能順利完成這次報告的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論