版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> ( 程序設(shè)計與算法語言 )課程設(shè)計</p><p> 實驗時間: 2011學(xué)年第二學(xué)期 </p><p> 專業(yè)年級: 2011級統(tǒng)計 2 班 </p><p><b> 實驗題目:</b></p><p><b> 1、數(shù)學(xué)問題</
2、b></p><p> 2、統(tǒng)計字符出現(xiàn)的頻率</p><p><b> 3、單詞計數(shù)</b></p><p><b> 目 錄</b></p><p><b> 題目1(a)1</b></p><p><b> 需求分
3、析1</b></p><p><b> 概要設(shè)計2</b></p><p><b> 詳細(xì)設(shè)計3</b></p><p><b> 測試結(jié)果6</b></p><p><b> 題目1(b)7</b></p>&
4、lt;p><b> 需求分析7</b></p><p><b> 概要設(shè)計9</b></p><p><b> 詳細(xì)設(shè)計9</b></p><p><b> 測試結(jié)果13</b></p><p><b> 題目314&l
5、t;/b></p><p><b> 需求分析14</b></p><p><b> 概要設(shè)計16</b></p><p><b> 詳細(xì)設(shè)計17</b></p><p><b> 測試結(jié)果19</b></p><
6、p><b> 課程設(shè)計總結(jié)20</b></p><p><b> 參考文獻(xiàn)1</b></p><p> 附錄:(帶注釋的源程序)2</p><p><b> 題目1(a)</b></p><p><b> 需求分析</b></p
7、><p> 1.輸入3個大于0的整數(shù);</p><p><b> 2.輸出2個整數(shù);</b></p><p> 3.程序功能為輸入3個大于零的整數(shù)并求出它們的最大公約數(shù)和最小公倍數(shù),然后輸出。</p><p><b> 高層數(shù)據(jù)流圖:</b></p><p><b&
8、gt; 低層數(shù)據(jù)流圖:</b></p><p><b> 概要設(shè)計</b></p><p><b> 細(xì)化的程序結(jié)構(gòu)圖:</b></p><p><b> 詳細(xì)設(shè)計</b></p><p> 1.程序共分為4個模塊,分別為:輸入模塊,求最大公約數(shù)模塊,求最
9、小公倍數(shù)模塊和輸出模塊。</p><p><b> 2.算法方面</b></p><p><b> 求最大公約數(shù):</b></p><p> 設(shè)置整型變量j,divisor和min</p><p> If輸入的某個數(shù)小于于另外2個數(shù)</p><p><b>
10、 設(shè)置這個數(shù)給min</b></p><p> if某個從1開始一直到min的整數(shù)可以同時整除輸入的3個數(shù)</p><p> 設(shè)置這個數(shù)給divisor</p><p><b> 返回divisor</b></p><p> 總體思路為先找出3個數(shù)中的最小數(shù),以此作為最大公約數(shù)的上限,然后從1開始依
11、次遞增1,從1到最小數(shù)中找出最大的能同時被這3個數(shù)整除的數(shù),所求即為最大公約數(shù)。</p><p><b> 求最小公倍數(shù):</b></p><p> 設(shè)置整型變量i,multipler和max</p><p> If輸入的某個數(shù)大于另外2個數(shù)</p><p><b> 設(shè)置這個數(shù)給max</b&g
12、t;</p><p> if某個從max開始一直到正無窮的整數(shù)可以同時被輸入的3個數(shù)整除</p><p> 設(shè)置這個數(shù)給divisor</p><p><b> 返回divisor</b></p><p> 總體思路為先找出3個數(shù)中的最大數(shù),然后以此為基數(shù)依次遞增1,找到的第一個能同時整除這3個數(shù)的整數(shù)就是最小公
13、倍數(shù)。</p><p><b> 流程圖:</b></p><p><b> 測試結(jié)果</b></p><p><b> 輸入正確時的結(jié)果:</b></p><p><b> 輸入錯誤時的結(jié)果:</b></p><p>
14、輸入錯誤時程序可以通知用戶再次輸入任何正確的數(shù)值。</p><p><b> 題目1(b)</b></p><p><b> 需求分析</b></p><p> 輸入5個整型數(shù)字作為數(shù)列,輸入1個整型數(shù)字插入于已輸入的數(shù)列;</p><p><b> 輸出6個整型數(shù)字;</b
15、></p><p> 程序功能為把第一次輸入的由5個整型數(shù)字組成的數(shù)列由小到大排列,并把第二次輸入的整數(shù)插入到數(shù)列中,結(jié)果仍由小到大排列,并被打印于屏幕上。</p><p> 高層數(shù)據(jù)流圖: </p><p> 低層細(xì)化的數(shù)據(jù)流圖:</p><p><b> 概要設(shè)計&
16、lt;/b></p><p><b> 細(xì)化的程序結(jié)構(gòu)圖:</b></p><p><b> 詳細(xì)設(shè)計</b></p><p> 1. 程序共分為4個模塊,分別為:輸入模塊,排列輸入5個整數(shù)模塊,排列后面插入的整數(shù)模塊和輸出模塊。</p><p><b> 2. 算法方面&l
17、t;/b></p><p> 設(shè)計交換計數(shù)器count為0</p><p> 定義5個數(shù)的一維數(shù)組</p><p> 輸入5個數(shù)字于一維數(shù)組</p><p> For這個列表中從第一個元素到最后一個元素的每個元素</p><p> 設(shè)置最下數(shù)值等于當(dāng)前元素</p><p> 保
18、存當(dāng)前元素的索引值</p><p> For在這個列表中從當(dāng)前索引值加1的元素到最后一個元素</p><p> If元素【內(nèi)循環(huán)索引值】<最小數(shù)值</p><p> 設(shè)置之歌最小數(shù)值=元素【內(nèi)層循環(huán)索引值】</p><p><b> EndIf</b></p><p><b&g
19、t; EndFor</b></p><p> 交換當(dāng)前數(shù)值與心得最小數(shù)值</p><p> 交換計數(shù)器count加1</p><p><b> EndFor</b></p><p> 返回交換計數(shù)器count的值</p><p><b> 定義新的一維數(shù)組<
20、/b></p><p> 把前面數(shù)組的5個數(shù)賦給新定義一維數(shù)組的前五個數(shù)</p><p> 把再次輸入的數(shù)賦給新定義一維數(shù)組的第六個數(shù)</p><p> For這個列表中從第一個元素到最后一個元素的每個元素</p><p> 設(shè)置最下數(shù)值等于當(dāng)前元素</p><p> 保存當(dāng)前元素的索引值</p&
21、gt;<p> For在這個列表中從當(dāng)前索引值加1的元素到最后一個元素</p><p> If元素【內(nèi)循環(huán)索引值】<最小數(shù)值</p><p> 設(shè)置之歌最小數(shù)值=元素【內(nèi)層循環(huán)索引值】</p><p><b> EndIf</b></p><p><b> EndFor</b
22、></p><p> 交換當(dāng)前數(shù)值與新的最小數(shù)值</p><p><b> 流程圖:</b></p><p><b> 總流程圖:</b></p><p><b> 測試結(jié)果</b></p><p> 輸入測試文本時的結(jié)果:</p&
23、gt;<p><b> 題目3</b></p><p><b> 需求分析</b></p><p> 1.輸入為打開的一個文件,用戶無需在程序中輸入,但可自行修改文件內(nèi)容;</p><p> 2.輸出1個整型數(shù)值;</p><p> 3.程序功能為打開根目錄中的一個文件,并計
24、算文件中單詞的數(shù)量,然后返回一個整數(shù)。</p><p><b> 高層數(shù)據(jù)流圖:</b></p><p><b> 低層數(shù)據(jù)流圖:</b></p><p><b> 概要設(shè)計</b></p><p><b> 細(xì)化的程序結(jié)構(gòu)圖:</b></p
25、><p><b> 詳細(xì)設(shè)計</b></p><p> 1. 程序共分為2個模塊,分別為:計算單詞數(shù)量模塊和輸出模塊。</p><p><b> 2. 算法方面</b></p><p> 用fopen打開文件并把內(nèi)容賦給一維數(shù)組message</p><p> 設(shè)置一個
26、名為inaword的整數(shù)變量給符號常量NO</p><p><b> 設(shè)置單詞計數(shù)器為0</b></p><p> If當(dāng)前字符時一個空格,逗號,或?qū)嵭膱A點</p><p> 設(shè)置inaword給NO</p><p> Else if(inaword == NO)</p><p> 設(shè)定
27、 inaword 給符號常量YES</p><p><b> 給單詞計數(shù)器加1</b></p><p><b> End if</b></p><p><b> Endfor</b></p><p><b> 返回計數(shù)器的數(shù)值</b></p&
28、gt;<p> 這個算法的關(guān)鍵在于if/else的條件式。如果當(dāng)前字符是一個空字符或逗號,則inword被設(shè)置為NO,不管他在前面的字符值是什么。只有在當(dāng)前字符不是空格或逗號是才檢查else中的條件式。然后,它檢查我們是否不在一個單詞中。這樣,在當(dāng)前字符不是一個空字符或逗號和我們不在一個單詞中時,這個else的條件式將為真,這就意味著我們進(jìn)行必須從一個空字符或逗號到非空字符的轉(zhuǎn)換。因為只是確定我們在一個單詞中的標(biāo)準(zhǔn),這個
29、單詞計數(shù)被增加,inaword變量被設(shè)置為YES。</p><p> 流程圖: </p><p><b> 測試結(jié)果</b></p><p> 輸入測試文本時的結(jié)果:</p><p><b> 課程設(shè)計總結(jié)</b></p><p> 通過程序的編寫,讓我
30、懂得了程序的設(shè)計與編寫,懂得了怎么樣去實現(xiàn)一個程序,怎么樣將外部文件數(shù)據(jù)讀入到內(nèi)存中,并存儲到數(shù)組中,明白了算法的外部引用很方便于程序的編寫,進(jìn)一步熟悉了C語言的運行環(huán)境與編寫,有利與以后的程序?qū)W習(xí),同時也非常感謝再此過程中老師的悉心指導(dǎo)。</p><p><b> 參考文獻(xiàn)</b></p><p><b> 標(biāo)準(zhǔn)C語言基礎(chǔ)教程</b><
31、;/p><p><b> ?。ǖ谒陌妫?lt;/b></p><p> A First Book of ANSI C</p><p> Fourth Edition</p><p> 【美】 Gary J. Bronson 著</p><p> 單先余 陳芳 張蓉 等譯</p>
32、<p><b> 單興 審校</b></p><p><b> 電子工業(yè)出版社</b></p><p> 附錄:(帶注釋的源程序)</p><p><b> 題目1a</b></p><p> /*求3個數(shù)的最大公約數(shù)和最小公倍數(shù)*/</p>
33、<p> #include<stdio.h></p><p> int main()</p><p><b> {</b></p><p> int a,b,c,d,e;</p><p> int divisor(int,int,int); /*聲明函數(shù)原型*/</p>&
34、lt;p> int multiple(int,int,int);/*聲明函數(shù)原型*/</p><p> printf("Please enter 3 numbers:\n");</p><p> scanf("%d%d%d",&a,&b,&c);</p><p> if (a<=0|
35、|b<=0||c<=0)</p><p><b> {</b></p><p> printf("Negative numbers and zero are not alowed,please enter again.\n");</p><p> printf("Please enter 3 nu
36、mbers:\n");</p><p> scanf("%d%d%d",&a,&b,&c);</p><p><b> getch();</b></p><p><b> }</b></p><p> d = divisor (a,b,c
37、);</p><p> e = multiple (a,b,c);</p><p> printf("The greatest common divisor of %d,%d and %d is %d\n",a,b,c,d);</p><p> printf("The least common X of %d,%d and %d
38、is %d\n",a,b,c,e); </p><p><b> getch();</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> int divisor (int a,int b,int
39、c)</p><p><b> {</b></p><p> int j,s,min;</p><p> if (a<=b&&a<=c)</p><p><b> min=a;</b></p><p> if (b<=a&&
40、amp;b<=c)</p><p><b> min=b;</b></p><p> if (c<=a&&c<=a)</p><p><b> min=c;</b></p><p> /*找出3個數(shù)中的最小數(shù)*/ </p><p>
41、 for(j=1;j<=min;j++)/*控制范圍在1到最小數(shù)之間*/ </p><p><b> {</b></p><p> if(a%j==0&&b%j==0&&c%j==0)</p><p> s=j;/*滿足整除輸入的三個數(shù)*/ </p><p><b>
42、 }</b></p><p><b> return s;</b></p><p><b> }</b></p><p> Int multiple(int a,int b,int c)</p><p><b> {</b></p><
43、p> int i,k ,max;</p><p> if (a>=b&&a>=c)</p><p><b> max=a;</b></p><p> else if(b>=a&&b>=c)</p><p><b> max=b;</b
44、></p><p> else if(c>=a&&c>=b)</p><p><b> max=c;</b></p><p> /*找出3個數(shù)中的最大數(shù)*/ </p><p> for (i=max; ;i++)/*以最大的數(shù)為基數(shù)*/ </p><p>
45、<b> {</b></p><p> if (i%a==0&&i%b==0&&i%c==0)/*滿足被輸入的3個數(shù)整除 */ </p><p><b> {</b></p><p><b> k = i;</b></p><p><
46、;b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> return k; </p><p><b> }</b></p><p><b> 題目
47、1b</b></p><p> /*把一個整數(shù)插入到由小到大排列的數(shù)列中,插入后保持升序排列*/</p><p> #include<stdio.h></p><p> #define NUMEL 10</p><p> int selectionSort(int[],int);</p><
48、p> int main()</p><p><b> {</b></p><p> int nums[NUMEL] = {22,5,67,98,45,32,101,99,73,10};</p><p> int i,moves;</p><p> moves = selectionSort(nums,NU
49、MEL);</p><p> printf("The sorted list, in ascending order, is:\n");</p><p> for (i =0;i< NUMEL; i++)</p><p> printf("%d ",nums[i]);</p><p> p
50、rintf("\n%d moves were made to sort this list\n",moves);</p><p><b> getch();</b></p><p><b> return 0;</b></p><p><b> }</b></p>
51、<p> int selectionSort (int num[],int numel)</p><p><b> {</b></p><p> int i,j,min,minidx,temp,moves = 0;</p><p> for ( i=0;i<(numel-1);i++)</p><
52、p><b> {</b></p><p> min = num[i];</p><p> minidx = i;</p><p> for(j = i+1; j<numel;j++)</p><p><b> {</b></p><p> if (nu
53、m[j]<min)</p><p><b> {</b></p><p> min = num[j];</p><p> minidx = j;</p><p><b> }</b></p><p><b> }</b></p>
54、;<p> if (min<num[i])</p><p><b> {</b></p><p> temp = num[i];</p><p> num[i] = min;</p><p> num[minidx] = temp;</p><p><b>
55、 moves++;</b></p><p><b> }</b></p><p><b> }</b></p><p> return (moves);</p><p><b> }</b></p><p><b> 題
56、目3</b></p><p> /*計算文件中單詞的數(shù)量*/ </p><p> #include<stdio.h></p><p> #define MAXNUM 1000</p><p> int countword (char []);</p><p> int main ()&
57、lt;/p><p><b> {</b></p><p> FILE *inFile;</p><p> int numchar;</p><p> inFile=fopen("test.txt","r");</p><p> char message
58、[MAXNUM];</p><p> fgets(message,1000,inFile);/*把文件內(nèi)容賦給定義的一維數(shù)組*/ </p><p> numchar = countword(message);</p><p> printf("The number of words in the file is %d\n",numchar)
59、;</p><p><b> return 0;</b></p><p><b> } </b></p><p> int countword (char list[])</p><p> #define YES 1</p><p> #define NO 0<
60、;/p><p><b> {</b></p><p> int i,inaword,count=0;</p><p> inaword = NO;</p><p> for(i=0;list[i]!='\0';i++)</p><p><b> {</b>
61、;</p><p> if (list[i]==' '||list[i]==','||list[i]=='-'||list[i]=='.')</p><p> inaword = NO; </p><p> else if (inaword == NO)</p><p>&
62、lt;b> {</b></p><p> inaword = YES;</p><p><b> count++;</b></p><p><b> }</b></p><p><b> }</b></p><p> ret
溫馨提示
- 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è)計及算法語言計算機(jī)程序設(shè)計
- 程序設(shè)計與算法語言上機(jī)試題abc--
- c語言程序設(shè)計課程設(shè)計
- 匯編語言程序設(shè)計課程設(shè)計
- 《高級語言程序設(shè)計》課程設(shè)計報告
- 《c語言程序設(shè)計》課程設(shè)計報告
- 《高級語言程序設(shè)計》課程設(shè)計大綱
- 匯編語言程序設(shè)計-課程設(shè)計
- c語言程序設(shè)計課程設(shè)計報告
- 算法課程設(shè)計---中文分詞程序設(shè)計與實現(xiàn)
- 《c++語言程序設(shè)計》課程設(shè)計報告
- 《c語言程序設(shè)計》課程設(shè)計推箱子
- 《程序設(shè)計語言(c++)》課程設(shè)計
- c課程設(shè)計報告-- c語言程序設(shè)計
- c語言程序設(shè)計課程設(shè)計(論文)-迷宮
- 《c語言程序設(shè)計》課程設(shè)計指導(dǎo)手冊()
- 《c語言程序設(shè)計課程設(shè)計》-課程教學(xué)大綱
- 數(shù)值計算課程設(shè)計--典型數(shù)值算法的c++語言程序設(shè)計
- 數(shù)值方法課程設(shè)計--典型數(shù)值算法的c++語言程序設(shè)計
- 數(shù)值計算課程設(shè)計-典型數(shù)值算法的c++語言程序設(shè)計
評論
0/150
提交評論