版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 高級語言程序設計課程設計</p><p><b> 題目: </b></p><p> 專 業(yè) 計算機 類 </p><p> 班 級 計算機類1102 </p><p> 學 生 &l
2、t;/p><p> 學 號 </p><p> 指導教師 _______________</p><p> 起止時間 2012.2.13——2012.2.17 </p><p><b> 2012年 2月</b></p><p><b> 目錄
3、</b></p><p><b> 實驗報告3</b></p><p><b> 必做題:3</b></p><p><b> 選做題:8</b></p><p> 題目10 寫一個日歷顯示程序8</p><p> 流程圖:
4、(如下)14</p><p><b> 工程代碼:19</b></p><p><b> 心得體會24</b></p><p><b> 實驗報告</b></p><p><b> 必做題:</b></p><p>
5、?。?) 編一程序對2種排序方法進行比較:交換法、選擇法、插入法、冒泡法四種方法選2。具體比較方法是隨機生成一組(≥300個)的100以內的整數數據,用選定的2種排序方法進行排序。紀錄排序過程中數據比較和交換的次數,輸出比較結果。</p><p> #include<stdio.h></p><p> #include<stdlib.h></p>
6、<p> int main(void)</p><p><b> {</b></p><p> int a[300],b[300];</p><p> int i,j,temp,t;</p><p> int s=0,p=0,s1=0,p1=0;</p><p> for(i
7、=0;i<300;i++)</p><p><b> {</b></p><p> a[i]=rand()%100;</p><p> b[i ]=a[i];</p><p><b> }</b></p><p> for(i=0;i<299;i++){
8、</p><p> for(j=i+1;j<300;j++)</p><p><b> {</b></p><p> if(a[i]<a[j])</p><p><b> {</b></p><p> temp=a[i];</p><
9、p> a[i]=a[j];</p><p> a[j]=temp;</p><p><b> s++;</b></p><p><b> }</b></p><p><b> p++;</b></p><p><b> }}&
10、lt;/b></p><p> printf("%d %d\n",s,p);</p><p> printf("\n");</p><p> for(i=0;i<299;i++)</p><p><b> {</b></p><p>&l
11、t;b> t=i;</b></p><p> for(j=i+1;j<300;j++)</p><p><b> {</b></p><p> if(b[t]<b[j])</p><p><b> t=j;</b></p><p>&l
12、t;b> if(t!=i){</b></p><p> temp=b[i];</p><p> b[i]=b[t];</p><p> b[t]=temp;</p><p><b> s1++;</b></p><p><b> }</b><
13、;/p><p><b> p1++;</b></p><p><b> }</b></p><p><b> }</b></p><p> printf("%d %d\n",s1,p1);</p><p><b> r
14、eturn 0;</b></p><p><b> }</b></p><p><b> 運行結果:</b></p><p> 在這個題目中選擇了交換法和選擇法,首先要產生300個隨機數,其次要懂得兩種排序法的原理,然后進行編程,同時利用循環(huán)結構。關鍵在于產生隨機數和排序。通過比較發(fā)現(xiàn)交換法的交換次數比選
15、擇法少,比較的次數兩者一樣。</p><p> (2) 寫一個函數void maxMinAver(int *data, int *max, int *min,float * ave,int size), 求一組數據的最大值、最小值和平均值,測試之。其中data指向給定數據的數組的指針,max、min、ave分別指向最大值、最小值和平均值,size是數組的大小。</p><p> 要求
16、第一個實參是數組,第2、3、4個實參都是對普通的簡單變量的某種操作,最后一個實參是數組的大小。測試之</p><p> #include<stdio.h></p><p> void maxMinAver(int *data, int *max, int *min,float * ave,int size);</p><p> int main(v
17、oid)</p><p><b> {</b></p><p> int *data,*max,*min,size;</p><p> float *ave;</p><p> maxMinAver(data,max,min,ave,size);</p><p><b> re
18、turn 0;</b></p><p><b> }</b></p><p> void maxMinAver(int *data, int *max, int *min,float * ave,int size)</p><p><b> {</b></p><p> int
19、a[10];</p><p> int b,c,n,j,s=0,temp;</p><p><b> float d;</b></p><p><b> data=a;</b></p><p><b> max=&b;</b></p><p&
20、gt;<b> min=&c;</b></p><p><b> ave=&d;</b></p><p> for(n=0;n<10;n++)</p><p><b> {</b></p><p> scanf("%d",&a
21、mp;a[n]);</p><p><b> }</b></p><p> //交換法排序求最大最小值</p><p> for(n=0;n<9;n++)</p><p><b> {</b></p><p> for(j=n+1;j<10;j++){&
22、lt;/p><p> if(a[n]<a[j])</p><p><b> {</b></p><p> temp=a[n];</p><p> a[n]=a[j];</p><p> a[j]=temp;</p><p><b> }</b&
23、gt;</p><p><b> }</b></p><p><b> }</b></p><p><b> b=a[0];</b></p><p><b> c=a[9];</b></p><p><b> /
24、/求平均數</b></p><p> for(n=0;n<10;n++)</p><p><b> {</b></p><p><b> s=s+a[n];</b></p><p><b> }</b></p><p> d=
25、(float)s/10;</p><p> printf("%d %d %f",*max,*min,*ave);</p><p><b> }</b></p><p> 這個題目需要利用函數調用,還要利用指針的間接引用法,設計函數將最大、最小以及平均值求出來。關鍵是函數調用。</p><p>&
26、lt;b> 選做題:</b></p><p> 題目10 寫一個日歷顯示程序</p><p><b> 基本功能:</b></p><p> 1).輸入任一年將顯示出該年的所有月份日期,對應的星期</p><p> 2). 注意閏年情況</p><p> 其顯示格式要
27、求如下:</p><p> 1)月份:中文英文都可以,</p><p> 2)下一行顯示星期,從周日到周六,中英文都可以</p><p> 3)下一行開始顯示日期從1號開始,并按其是周幾實際情況與上面的星期數垂直對齊</p><p> 當輸入2004顯示如下:</p><p> Input the year:
28、2004</p><p> Input the file name:a</p><p> The calendar of the year 2004.</p><p> Januray 1 February 2</p><p> Sun Mon Tue Wed Thu Fri Sat
29、 Sun Mon Tue Wed Thu Fri Sat</p><p> 1 2 3 1 2 3 4 5 6 7</p><p> 4 5 6 7 8 9 10 8 9 10 11 12 13 14</p><p> 11 12 13 14
30、 15 16 17 15 16 17 18 19 20 21</p><p> 18 19 20 21 22 23 24 22 23 24 25 26 27 28</p><p> 25 26 27 28 29 30 31 29</p><p> ==========
31、================= ===========================</p><p> March 3 April 4</p><p> Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat</p><p&g
32、t; 1 2 3 4 5 6 1 2 3</p><p> 7 8 9 10 11 12 13 4 5 6 7 8 9 10</p><p> 14 15 16 17 18 19 20 11 12 13 14 15 16
33、 17</p><p> 21 22 23 24 25 26 27 18 19 20 21 22 23 24</p><p> 28 29 30 31 25 26 27 28 29 30</p><p> ===========================
34、 ===========================</p><p> …</p><p> #include<stdio.h></p><p> int year(int p);</p><p> int riqi(int z);</p><p> int xinqi(
35、int w,int l,int jj);</p><p> void dayin(int m,int n,int a[12],int b[12],char c[30]);</p><p> int main(void)</p><p><b> {</b></p><p><b> int n,s;&l
36、t;/b></p><p> int m,qq,xx;</p><p> printf("Input the year:");</p><p> scanf("%d",&n);</p><p> s=year(n);</p><p> int a[12]
37、= {1,2,3,4,5,6,7,8,9,10,11,12};</p><p> int b[12]={31,s,31,30,31,30,31,31,30,31,30,31};</p><p> //printf("%d",b[1]);</p><p> char c[]="sun mon tue wed thr fri sat&
38、quot;;</p><p> printf("The calendar of the year %d\n",n);</p><p> m=riqi(n);</p><p> //printf("%d\n",m);</p><p> dayin(m,n,a,b,c);</p>&l
39、t;p><b> return 0;</b></p><p><b> }</b></p><p> //判斷輸入的那一年是否是閏年</p><p> int year(int p)</p><p><b> {</b></p><p>
40、 if(p%4 != 0)</p><p><b> {</b></p><p> return 28;</p><p><b> }</b></p><p> if(p%4 == 0)</p><p><b> {</b></p>
41、;<p> if(p%100 == 0)</p><p><b> {</b></p><p> if(p%400 == 0)</p><p><b> {</b></p><p> return 29;</p><p><b> }<
42、;/b></p><p> return 28;</p><p><b> }</b></p><p> return 29;</p><p><b> }</b></p><p><b> }</b></p><p&
43、gt; //求輸入那一年的1月1日式星期幾</p><p> /*參照1997年1月1日*/</p><p> int riqi(int z)</p><p><b> {</b></p><p><b> int d;</b></p><p> int days
44、=(z-1997)*365;</p><p> int i = (z- 1997)/4;</p><p> days=days+i*1;</p><p> /*1997年1月1日是星期三*/</p><p> d=days%7+1;</p><p> d=(d+2)%7;</p><p&g
45、t; if(d == 0)d = 7;</p><p><b> return d;</b></p><p><b> }</b></p><p> //從2月開始到12月每個月份的的1號是星期幾</p><p> int xinqi(int w,int l,int jj)</p&g
46、t;<p><b> {</b></p><p><b> int ss;</b></p><p><b> int qi;</b></p><p> int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};</p><
47、p> ss=year(l);</p><p><b> b[1]=ss;</b></p><p> qi=(b[jj-1]%7+(w-1)+1)%7;</p><p> return qi;</p><p><b> }</b></p><p> void
48、dayin(int m,int n,int a[12],int b[12],char c[30])</p><p><b> {</b></p><p> int i,r,v,xx,j,qq;</p><p> for(i=0;i<12;i++)</p><p><b> {</b>&
49、lt;/p><p> printf("%d\n",a[i]);</p><p> printf ("%s\n",c);</p><p><b> if(i==0){</b></p><p><b> if(m==7)</b></p><
50、p><b> m=0;</b></p><p> for(xx=0;xx<3*m+m*1;xx++)</p><p><b> {</b></p><p> printf(" ");</p><p><b> }</b></p&g
51、t;<p> printf("1");</p><p> for(r=2;r<=7-m;r++){</p><p> printf("%4d",r);</p><p><b> }</b></p><p> printf("\n")
52、;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> qq=xinqi(m,n,i);</p><p><b> m=qq;</b>&
53、lt;/p><p> // printf("%d\\\\\\\\",m);</p><p> for(xx=0;xx<3*m+m*1;xx++)</p><p><b> {</b></p><p> printf(" ");</p><p>&l
54、t;b> }</b></p><p> printf("1");</p><p> for(r=2;r<=7-m;r++)</p><p><b> {</b></p><p> printf("%4d",r);</p><p&
55、gt;<b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p> for(j=r,v=1;j<=b[i];j++,v++)</p><p><b> {</b></p>
56、;<p> printf("%-4d",j);</p><p> if(v%7==0)</p><p> printf("\n"); }</p><p> printf("\n==========================");</p><p> pri
57、ntf("\n");</p><p><b> }</b></p><p><b> }</b></p><p><b> 運行結果:</b></p><p> 這個程序要求輸入任意年能打印出該年的一月到十二月的日歷表;因此需要年份,月份,日期;但如
58、上程序是以1997的1月1日(星期三)為參照,因此只能查詢1997年以后的年份日歷(包括1997年)。</p><p><b> 流程圖:(如下)</b></p><p><b> 主流程圖:</b></p><p><b> 分層流程圖:</b></p><p><
59、;b> 模塊流程圖:</b></p><p><b> dayin:</b></p><p><b> year:</b></p><p><b> xinqi:</b></p><p><b> 工程代碼:</b></p
60、><p> 1.main.c :</p><p> #include<stdio.h></p><p> #include"li.h"</p><p> int main(void)</p><p><b> {</b></p><p>
61、;<b> int n,s;</b></p><p> int m,qq,xx;</p><p> printf("Input the year:");</p><p> scanf("%d",&n);</p><p> s=year(n);</p>
62、<p> int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};</p><p> int b[12]={31,s,31,30,31,30,31,31,30,31,30,31};</p><p> //printf("%d",b[1]);</p><p> char c[]="sun mo
63、n tue wed thr fri sat";</p><p> printf("The calendar of the year %d\n",n);</p><p> m=riqi(n);</p><p> //printf("%d\n",m);</p><p> dayin(m,n
64、,a,b,c);</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 2.ri.c: </b></p><p> //判斷輸入的那一年是否是閏年</p><p> int yea
65、r(int p)</p><p><b> {</b></p><p> if(p%4 != 0)</p><p><b> {</b></p><p> return 28;</p><p><b> }</b></p><
66、;p> if(p%4 == 0)</p><p><b> {</b></p><p> if(p%100 == 0)</p><p><b> {</b></p><p> if(p%400 == 0)</p><p><b> {</b&
67、gt;</p><p> return 29;</p><p><b> }</b></p><p> return 28;</p><p><b> }</b></p><p> return 29;</p><p><b>
68、}</b></p><p><b> }</b></p><p> //求輸入那一年的1月1日式星期幾</p><p> /*參照1997年1月1日*/</p><p> int riqi(int z)</p><p><b> {</b></p&
69、gt;<p><b> int d;</b></p><p> int days=(z-1997)*365;</p><p> int i = (z- 1997)/4;</p><p> days=days+i*1;</p><p> /*1997年1月1日是星期三*/</p>&l
70、t;p> d=days%7+1;</p><p> d=(d+2)%7;</p><p> if(d == 0)d = 7;</p><p><b> return d;</b></p><p><b> }</b></p><p> //從2月開始到12月
71、每個月份的的1號是星期幾</p><p> int xinqi(int w,int l,int jj)</p><p><b> {</b></p><p><b> int ss;</b></p><p><b> int qi;</b></p><
72、;p> int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};</p><p> ss=year(l);</p><p><b> b[1]=ss;</b></p><p> qi=(b[jj-1]%7+(w-1)+1)%7;</p><p> return qi
73、;</p><p><b> }</b></p><p><b> //打印日歷</b></p><p> void dayin(int m,int n,int a[12],int b[12],char c[30])</p><p><b> {</b></p&g
74、t;<p> int i,r,v,xx,j,qq;</p><p> for(i=0;i<12;i++)</p><p><b> {</b></p><p> printf("%d\n",a[i]);</p><p> printf ("%s\n",
75、c);</p><p><b> if(i==0){</b></p><p><b> if(m==7)</b></p><p><b> m=0;</b></p><p> for(xx=0;xx<3*m+m*1;xx++)</p><p&g
76、t;<b> {</b></p><p> printf(" ");</p><p><b> }</b></p><p> printf("1");</p><p> for(r=2;r<=7-m;r++){</p><p
77、> printf("%4d",r);</p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p><b> else</b></p>
78、<p><b> {</b></p><p> qq=xinqi(m,n,i);</p><p><b> m=qq;</b></p><p> // printf("%d\\\\\\\\",m);</p><p> for(xx=0;xx<3*m+
79、m*1;xx++)</p><p><b> {</b></p><p> printf(" ");</p><p><b> }</b></p><p> printf("1");</p><p> for(r=2;r<
80、;=7-m;r++)</p><p><b> {</b></p><p> printf("%4d",r);</p><p><b> }</b></p><p> printf("\n");</p><p><b>
81、; }</b></p><p> for(j=r,v=1;j<=b[i];j++,v++)</p><p><b> {</b></p><p> printf("%-4d",j);</p><p> if(v%7==0)</p><p> pri
82、ntf("\n");</p><p><b> }</b></p><p> printf("\n==========================");</p><p> printf("\n");</p><p><b> }</b
83、></p><p><b> }</b></p><p><b> 3.li.h :</b></p><p> #ifndef LI_H</p><p> #define LI_H</p><p> int year(int p);</p>&l
84、t;p> int riqi(int z);</p><p> int xinqi(int w,int l,int jj);</p><p> void dayin(int m,int n,int a[12],int b[12],char c[30]);</p><p><b> #endif</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論