版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> ( 程序設(shè)計(jì)與算法語言 )課程設(shè)計(jì)</p><p> 實(shí)驗(yàn)時(shí)間: 2011學(xué)年第二學(xué)期 </p><p> 專業(yè)年級: 2011級統(tǒng)計(jì) 2 班 </p><p><b> 實(shí)驗(yàn)題目:</b></p><p><b> 1、數(shù)學(xué)問題</
2、b></p><p> 2、統(tǒng)計(jì)字符出現(xiàn)的頻率</p><p><b> 3、單詞計(jì)數(shù)</b></p><p><b> 目 錄</b></p><p><b> 題目1(a)1</b></p><p><b> 需求分
3、析1</b></p><p><b> 概要設(shè)計(jì)2</b></p><p><b> 詳細(xì)設(shè)計(jì)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è)計(jì)9</b></p><p><b> 詳細(xì)設(shè)計(jì)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è)計(jì)16</b></p><p><b> 詳細(xì)設(shè)計(jì)17</b></p><p><b> 測試結(jié)果19</b></p><
6、p><b> 課程設(shè)計(jì)總結(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個(gè)大于0的整數(shù);</p><p><b> 2.輸出2個(gè)整數(shù);</b></p><p> 3.程序功能為輸入3個(gè)大于零的整數(shù)并求出它們的最大公約數(shù)和最小公倍數(shù),然后輸出。</p><p><b> 高層數(shù)據(jù)流圖:</b></p><p><b&
8、gt; 低層數(shù)據(jù)流圖:</b></p><p><b> 概要設(shè)計(jì)</b></p><p><b> 細(xì)化的程序結(jié)構(gòu)圖:</b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> 1.程序共分為4個(gè)模塊,分別為:輸入模塊,求最大公約數(shù)模塊,求最
9、小公倍數(shù)模塊和輸出模塊。</p><p><b> 2.算法方面</b></p><p><b> 求最大公約數(shù):</b></p><p> 設(shè)置整型變量j,divisor和min</p><p> If輸入的某個(gè)數(shù)小于于另外2個(gè)數(shù)</p><p><b>
10、 設(shè)置這個(gè)數(shù)給min</b></p><p> if某個(gè)從1開始一直到min的整數(shù)可以同時(shí)整除輸入的3個(gè)數(shù)</p><p> 設(shè)置這個(gè)數(shù)給divisor</p><p><b> 返回divisor</b></p><p> 總體思路為先找出3個(gè)數(shù)中的最小數(shù),以此作為最大公約數(shù)的上限,然后從1開始依
11、次遞增1,從1到最小數(shù)中找出最大的能同時(shí)被這3個(gè)數(shù)整除的數(shù),所求即為最大公約數(shù)。</p><p><b> 求最小公倍數(shù):</b></p><p> 設(shè)置整型變量i,multipler和max</p><p> If輸入的某個(gè)數(shù)大于另外2個(gè)數(shù)</p><p><b> 設(shè)置這個(gè)數(shù)給max</b&g
12、t;</p><p> if某個(gè)從max開始一直到正無窮的整數(shù)可以同時(shí)被輸入的3個(gè)數(shù)整除</p><p> 設(shè)置這個(gè)數(shù)給divisor</p><p><b> 返回divisor</b></p><p> 總體思路為先找出3個(gè)數(shù)中的最大數(shù),然后以此為基數(shù)依次遞增1,找到的第一個(gè)能同時(shí)整除這3個(gè)數(shù)的整數(shù)就是最小公
13、倍數(shù)。</p><p><b> 流程圖:</b></p><p><b> 測試結(jié)果</b></p><p><b> 輸入正確時(shí)的結(jié)果:</b></p><p><b> 輸入錯(cuò)誤時(shí)的結(jié)果:</b></p><p>
14、輸入錯(cuò)誤時(shí)程序可以通知用戶再次輸入任何正確的數(shù)值。</p><p><b> 題目1(b)</b></p><p><b> 需求分析</b></p><p> 輸入5個(gè)整型數(shù)字作為數(shù)列,輸入1個(gè)整型數(shù)字插入于已輸入的數(shù)列;</p><p><b> 輸出6個(gè)整型數(shù)字;</b
15、></p><p> 程序功能為把第一次輸入的由5個(gè)整型數(shù)字組成的數(shù)列由小到大排列,并把第二次輸入的整數(shù)插入到數(shù)列中,結(jié)果仍由小到大排列,并被打印于屏幕上。</p><p> 高層數(shù)據(jù)流圖: </p><p> 低層細(xì)化的數(shù)據(jù)流圖:</p><p><b> 概要設(shè)計(jì)&
16、lt;/b></p><p><b> 細(xì)化的程序結(jié)構(gòu)圖:</b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> 1. 程序共分為4個(gè)模塊,分別為:輸入模塊,排列輸入5個(gè)整數(shù)模塊,排列后面插入的整數(shù)模塊和輸出模塊。</p><p><b> 2. 算法方面&l
17、t;/b></p><p> 設(shè)計(jì)交換計(jì)數(shù)器count為0</p><p> 定義5個(gè)數(shù)的一維數(shù)組</p><p> 輸入5個(gè)數(shù)字于一維數(shù)組</p><p> For這個(gè)列表中從第一個(gè)元素到最后一個(gè)元素的每個(gè)元素</p><p> 設(shè)置最下數(shù)值等于當(dāng)前元素</p><p> 保
18、存當(dāng)前元素的索引值</p><p> For在這個(gè)列表中從當(dāng)前索引值加1的元素到最后一個(gè)元素</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> 交換計(jì)數(shù)器count加1</p><p><b> EndFor</b></p><p> 返回交換計(jì)數(shù)器count的值</p><p><b> 定義新的一維數(shù)組<
20、/b></p><p> 把前面數(shù)組的5個(gè)數(shù)賦給新定義一維數(shù)組的前五個(gè)數(shù)</p><p> 把再次輸入的數(shù)賦給新定義一維數(shù)組的第六個(gè)數(shù)</p><p> For這個(gè)列表中從第一個(gè)元素到最后一個(gè)元素的每個(gè)元素</p><p> 設(shè)置最下數(shù)值等于當(dāng)前元素</p><p> 保存當(dāng)前元素的索引值</p&
21、gt;<p> For在這個(gè)列表中從當(dāng)前索引值加1的元素到最后一個(gè)元素</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> 輸入測試文本時(shí)的結(jié)果:</p&
23、gt;<p><b> 題目3</b></p><p><b> 需求分析</b></p><p> 1.輸入為打開的一個(gè)文件,用戶無需在程序中輸入,但可自行修改文件內(nèi)容;</p><p> 2.輸出1個(gè)整型數(shù)值;</p><p> 3.程序功能為打開根目錄中的一個(gè)文件,并計(jì)
24、算文件中單詞的數(shù)量,然后返回一個(gè)整數(shù)。</p><p><b> 高層數(shù)據(jù)流圖:</b></p><p><b> 低層數(shù)據(jù)流圖:</b></p><p><b> 概要設(shè)計(jì)</b></p><p><b> 細(xì)化的程序結(jié)構(gòu)圖:</b></p
25、><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> 1. 程序共分為2個(gè)模塊,分別為:計(jì)算單詞數(shù)量模塊和輸出模塊。</p><p><b> 2. 算法方面</b></p><p> 用fopen打開文件并把內(nèi)容賦給一維數(shù)組message</p><p> 設(shè)置一個(gè)
26、名為inaword的整數(shù)變量給符號常量NO</p><p><b> 設(shè)置單詞計(jì)數(shù)器為0</b></p><p> If當(dāng)前字符時(shí)一個(gè)空格,逗號,或?qū)嵭膱A點(diǎn)</p><p> 設(shè)置inaword給NO</p><p> Else if(inaword == NO)</p><p> 設(shè)定
27、 inaword 給符號常量YES</p><p><b> 給單詞計(jì)數(shù)器加1</b></p><p><b> End if</b></p><p><b> Endfor</b></p><p><b> 返回計(jì)數(shù)器的數(shù)值</b></p&
28、gt;<p> 這個(gè)算法的關(guān)鍵在于if/else的條件式。如果當(dāng)前字符是一個(gè)空字符或逗號,則inword被設(shè)置為NO,不管他在前面的字符值是什么。只有在當(dāng)前字符不是空格或逗號是才檢查else中的條件式。然后,它檢查我們是否不在一個(gè)單詞中。這樣,在當(dāng)前字符不是一個(gè)空字符或逗號和我們不在一個(gè)單詞中時(shí),這個(gè)else的條件式將為真,這就意味著我們進(jìn)行必須從一個(gè)空字符或逗號到非空字符的轉(zhuǎn)換。因?yàn)橹皇谴_定我們在一個(gè)單詞中的標(biāo)準(zhǔn),這個(gè)
29、單詞計(jì)數(shù)被增加,inaword變量被設(shè)置為YES。</p><p> 流程圖: </p><p><b> 測試結(jié)果</b></p><p> 輸入測試文本時(shí)的結(jié)果:</p><p><b> 課程設(shè)計(jì)總結(jié)</b></p><p> 通過程序的編寫,讓我
30、懂得了程序的設(shè)計(jì)與編寫,懂得了怎么樣去實(shí)現(xiàn)一個(gè)程序,怎么樣將外部文件數(shù)據(jù)讀入到內(nèi)存中,并存儲(chǔ)到數(shù)組中,明白了算法的外部引用很方便于程序的編寫,進(jìn)一步熟悉了C語言的運(yùn)行環(huán)境與編寫,有利與以后的程序?qū)W習(xí),同時(shí)也非常感謝再此過程中老師的悉心指導(dǎo)。</p><p><b> 參考文獻(xiàn)</b></p><p><b> 標(biāo)準(zhǔn)C語言基礎(chǔ)教程</b><
31、;/p><p><b> (第四版)</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個(gè)數(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個(gè)數(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;/*滿足整除輸入的三個(gè)數(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個(gè)數(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個(gè)數(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> /*把一個(gè)整數(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> /*計(jì)算文件中單詞的數(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 程序設(shè)計(jì)及算法語言計(jì)算機(jī)程序設(shè)計(jì)
- 程序設(shè)計(jì)與算法語言上機(jī)試題abc--
- c語言程序設(shè)計(jì)課程設(shè)計(jì)
- 匯編語言程序設(shè)計(jì)課程設(shè)計(jì)
- 《高級語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- 《高級語言程序設(shè)計(jì)》課程設(shè)計(jì)大綱
- 匯編語言程序設(shè)計(jì)-課程設(shè)計(jì)
- c語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 算法課程設(shè)計(jì)---中文分詞程序設(shè)計(jì)與實(shí)現(xiàn)
- 《c++語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)推箱子
- 《程序設(shè)計(jì)語言(c++)》課程設(shè)計(jì)
- c課程設(shè)計(jì)報(bào)告-- c語言程序設(shè)計(jì)
- c語言程序設(shè)計(jì)課程設(shè)計(jì)(論文)-迷宮
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)指導(dǎo)手冊()
- 《c語言程序設(shè)計(jì)課程設(shè)計(jì)》-課程教學(xué)大綱
- 數(shù)值計(jì)算課程設(shè)計(jì)--典型數(shù)值算法的c++語言程序設(shè)計(jì)
- 數(shù)值方法課程設(shè)計(jì)--典型數(shù)值算法的c++語言程序設(shè)計(jì)
- 數(shù)值計(jì)算課程設(shè)計(jì)-典型數(shù)值算法的c++語言程序設(shè)計(jì)
評論
0/150
提交評論