版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、課程實踐報告設計題目 : 程序設計 (VC+) 實踐設計時間 2013-1- 至 2013-1-學院 (系): 計算機科學與工程學院2013年1月一 實踐任務選擇題目,創(chuàng)新性題目可只選擇 1 題,僅選提高題應不少于 3 題,僅選基礎題應 不少于 6 題,也可組合選題,還可自行選擇感興趣的題目(須經(jīng)指導老師審定) 。 對于提高題、創(chuàng)新題及游戲題可組成團隊開發(fā),但應制定詳細的項目分工說明。二實驗步驟及記錄(題目,源程序代碼及運行結果)1. 與學號對應的題(必做題) :基礎題 12題目:建立一個STRING將一個字符串交叉插入到另一個字符串中(假定兩字符串不等長)。例如將字符串“ abcde” 交叉
2、插入字符串“ ABCDEF”G 的結果為“ aAbBcCdDeEFG或“ AaBbCcDdEeF”具體要求如下:1)私有數(shù)據(jù)成員char str160:存放被插入的字符串。char str240 :存放待插入的字符串。char str3100 :存放插入后的字符串。(2)公有成員函數(shù)STRING (char *s1, char *s2 ) :構造函數(shù),用 s1 和 s2 初始化 str1 和 str2 。void process() :將 str2 中的字符串插入到 str1 中,存放到 str3 中。void print() :輸出插入后的字符串。(3)在主程序中定義 STRING類的對象t
3、est對該類進行測試。源程序代碼:#include#includeclass STRINGchar str160;char str240;char str3100;public:STRING(char *s1,char *s2)strcpy(str1,s1);strcpy(str2,s2);void process()char *p1=str1,*p2=str2;for(int i=0;*p2;i=i+2)for(int k=strlen(str1);k=i;k-)str1k+1=str1k;*p1=*p2;p1=p1+2;p2+;void print()strcpy(str3,str1);c
4、outstr3endl;void main()char s160=ABCDEFG;char s240=abcde;cout 原字符串: s1 s2endl;cout 交叉插入后的字符串: ;STRING test(s1,s2);cess();test.print();運行結果:2-6 為選做題,其中 2,3,4為基礎題; 5,6 為提高題。2. 基礎題 4題目: 建立一個類 MOV,E 將數(shù)組中最大元素的值與最小元素的值互換。 具體要求如下:( 1)私有數(shù)據(jù)成員int *array :一維整型數(shù)組。int n :數(shù)組中元素的個數(shù)。(2)公有成員函數(shù)MOVE(int b,int
5、m):構造函數(shù),初始化成員數(shù)據(jù)。void exchange() :輸出平均值,并將數(shù)組中的元素按要求重新放置。void print() :輸出一維數(shù)組。MOVE():析構函數(shù)。( 3)在主程序中用數(shù)據(jù) 21,65,43,87,12,84,44,97,32,55對該類進行測試源程序代碼:#includeclass MOVEint *array;int n;public:MOVE(int b,int m)n=m;array=new intm;for(int i=0;in;i+) arrayi=bi;void exchange()int b10;for(int k=0;kn;k+) bk=array
6、k;for(int i=0;in;i+)for(int j=i+1;j=bi)int temp=bi;bi=bj;bj=temp;int max=b0,min=bn-1;for(int p=0;pn;p+)if(arrayp=max)arrayp=min;else if(arrayp=min)arrayp=max;void print()for(int i=0;in;i+)coutarrayit;coutendl;MOVE()delete narray; ;void main()int a10=21,65,43,87,12,84,44,97,32,55;cout 原數(shù)組: endl;for(i
7、nt i=0;i10;i+)coutait;coutendl;cout 交換最大值和最小值后的數(shù)組: endl;MOVE a1(a,10);a1.exchange();a1.print();運行結果:3. 基礎題 16題目:定義一個方陣類 CMatrix ,并根據(jù)給定算法實現(xiàn)方陣的線性變換。方陣的變換形式 為:F=W*fTf 為原始矩陣, fT 為原始矩陣的轉置,w 為變換矩陣,這里設定為1 0 0 10 1 1 00 1 1 01 0 0 1 具體要求如下:( 1)私有數(shù)據(jù)成員int (*a)4: a 指向方陣數(shù)組。int w44: w 為變換矩陣。int m : m 表示方陣的行和列數(shù)。(
8、2)公有成員函數(shù):用給定的參數(shù)a和m初始化數(shù)據(jù)成員a和mCMatrix (int a4,int m)對變換矩陣 w 進行初始化,要求必須用循環(huán)實現(xiàn)。void Transform () :根據(jù)上述變換算法,求出變換后的數(shù)組形式,存放在原始數(shù)組內(nèi)。void show( ) :在屏幕上顯示數(shù)組元素。l CMatrix () :釋放動態(tài)分配的空間。( 3)在主程序中定義數(shù)組 intarr4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 作為原始數(shù)組。定義一個 CMatrix 類對象 test ,用 arr 初始化 test ,完成對該類的測試 源程序代碼:#includ
9、eclass CMatrixint (*a)4;int w44;int m;public:CMatrix(int a4,int m)this-m=m;this-a=new intthis-m4;for(int i=0;im;i+)for(int j=0;jm;j+)this-aij=aij;for(i=0;i4;i+)for( int j=0;j4;j+) if(i+j=3|i=j)wij=1; else wij=0;void Transform()int b44;for(int i=0;im;i+)for(int j=0;jm;j+) bij=aji;for(int p=0;p4;p+)fo
10、r(int q=0;q4;q+)apq=wp0*b0q+wp1*b1q+wp2*b2q+wp3*b3 q;void show()for(int i=0;i4;i+)for(int j=0;j4;j+)coutaijt;coutendl;CMatrix()delete ma;void main()int arr4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;cout 原始方陣: endl;for(int i=0;i4;i+)for(int j=0;j4;j+)coutarrijt;coutendl;cout 變換后的方陣: endl;CMatrix test(a
11、rr,4);test.Transform();test.show();運行結果4. 基礎題 17題目:n+117.定義一個類 SIN,求 sin( x) = x /1- x3 / 3!+ x5 / 5!- x7 / 7!+.+ (-1)x(2 n-1) /(2 n -1)! 具 體要求如下:1)私有成員數(shù)據(jù)。int x:輸入公式中x 的值,求 sin(x) 。int n:輸入公式中n 的值。2)公有成員函數(shù)SIN(int x, int n ):構造函數(shù),用于初始化 x勺值int power( int q)求 q! 的值。l int mi( int m,int n):求mn勺值。l int fu
12、n( ):用于求 SIN(X) 的值。l void show( ) :輸出求得的結果。3)在主程序中定義對象 test ,對該類進行測試 源程序代碼:#include class SIN private: int x; int n;public:SIN(int x, int n)this-x=x;this-n=n;int power(int q)int s=1;if(q1)s=s*q;q-;return s;int mi(int m, int n)int temp=1;for(int i=1;i=n;i+)temp*=m;return temp;int fun()int result=0;fo
13、r(int i=0;i=n;i+)result+=mi(-1,i)*mi(x,2*i+1)/power(2*i+1);return result;void show()coutsin(x) 的結果為 :fun()endl;void main()int x, n;cout 輸入一個整數(shù) xx;cout 輸入一個整數(shù) nn;SIN test(x,n);test.show();運行結果:5提高題 9題目:設計一個程序通過虛函數(shù)求長方形的面積和長方體的表面積,具體要求如下:( 1)定義長方形類 Rectangle保護的數(shù)據(jù)成員int l,w; / 表示長方形的長和寬int s; / 表示長方形的面積公
14、有的構造函數(shù)Rectangle(int x,int y): 初始化長方形的長和寬;公有的虛函數(shù)virtual void fun():求長方形的面積;virtual void show():輸出長方形的長、寬和面積。( 2)定義長方形類 A 的公有派生類 Cuboid ,表示長方體類私有的數(shù)據(jù)成員int h; / 表示長方體的高公有的構造函數(shù):Cuboid(int x,int y,int z): 初始化長方體的長、寬和高。公有函數(shù)void fun(): 求長方體的表面積;void show(): 輸出長方體的長、寬、高和表面積。(3)在主函數(shù)中對定義的類進行測試,要求定義長方形對象al (長為2
15、,寬為3), 長方體對象bl (長、寬、咼分別為2, 3, 4),通過基類的指針p分別求長方形 的面積和長方體的表面積,輸出數(shù)據(jù)成員,并體現(xiàn)運行的多態(tài)性。源程序代碼:#include class Rectangle protected:int l,w;int s;public:Rectangle(int x,int y)l=x;w=y;virtual void fun() s=l*w;virtual void show()cout 長 方形 的 長 為 : lt寬 為 : wt 面 積 為 :sendl;class Cuboid:public Rectangleint h;public:Cub
16、oid(int x,int y,int z):Rectangle(x,y)h=z;void fun()s=2*(w*l+w*h+h*l);void show()cout 長 方 體 的 長 為 : lt 寬 為 : wt 高 為 :ht 表面積為: sfun(); p-show();Cuboid b1(2,3,4); p=&b1; p-fun(); p-show();運行結果:6. 提高題 10題目:設計一個程序,查詢 2000 年1 月 1 日(星期六)后的某天是星期幾,具體要求如 下:( 1)定義函數(shù) int leap(int year) :判斷某年 year 是否為潤年。能夠被 400
17、整除, 或者能夠被 4 整除但不能衩 100 整除的年份是潤年。( 2)定義函數(shù) int f(int y,int m,int d,int *m1,int *m2) :判斷輸入的日期是否 合法,其中y、m d分別表示年、月、日,ml表示非潤年每月的天數(shù),m2表示潤年每月的天數(shù)。(3)定義類date,表示日期私有數(shù)據(jù)成員int year,month,day; / 分別表示某年某月某日公有成員函數(shù):date(int y,int m,int d):構造函數(shù),用形參分別初始化數(shù)據(jù)成員;int get_year() :訪問私有成員 year ;int get_month() :訪問私有成員 month;i
18、nt get_day() :訪問私有成員 day ;void show() :以指定格式輸出數(shù)據(jù)成員。(4)定義類week,判斷某天是星期幾私有數(shù)據(jù)成員date d1; / 日期類的對象,表示某日int m112;/存儲非潤年每月的天數(shù) 31,28,31,30,31,30,31,31,30,31,30,31int m212;/存儲潤年每月的天數(shù) 31,29,31,30,31,30,31,31,30,31,30,31int w;/ 表示用 0 表示星期天, 1 表示星期一,以此類推 6 表示星期六 公有成員函數(shù)week(int y,int m,int d,int *p1,int *p2):構造函
19、數(shù),用 y,m,d 初始化日期,用p1,p2 分別初始化 m1, m2;int days() :計算 d1 距 2000 年1 月 1 日的時間間隔(天數(shù));void fun():根據(jù)days()的計算結果判斷di是星期幾(求以06表示w的值);void print() :輸出判斷結果。5)在主函數(shù)中對定義的類進行測試。從鍵盤輸入一個日期,并檢查輸入數(shù)據(jù)的調(diào)用相關成員函數(shù),輸出判斷結果。程序運行結果如下:請輸入要查詢的日期(年月日): 2009 9 152009/9/15 ,是星期二。源程序代碼:#include int leap(int year)if(year%400=0 | year%1
20、00!=0 & year%4=0)return 1;else return 0;int f(int y,int m,int d,int *m1,int *m2)if(m=1|m=3|m=5|m=7|m=8|m=10|m=12)&d31)return 0; else if(m=4|m=6|m=9|m=11)&d30)return 0;else return 1;while(leap(y)if(m=2&(d=28|d=30)return 0;else return 1;while(!(leap(y)if(m=2&(d=29|d=30)return 0;else return 1;class dat
21、eint year,month,day;public:date(int y,int m,int d)year=y;month=m;day=d;int get_year()return year;int get_month()return month;int get_day()return day;void show()coutyear/month/day,;class weekdate d1;int m112;int m212;int w;public:week(int y,int m,int d,int *p1,int *p2):d1(y,m,d)for(int i=0;i12;i+)m1i
22、=p1i;for(int j=0;j12;j+)m2i=p2i;w=0;int days()int i,j, result = 0;for(j=2000;jd1.get_year();j+)result+=(leap(j)+365);for(i=1;id1.get_month();i+)if(i=1|i=3|i=5|i=7|i=8|i=10|i=12)result+=31;else if(i=4|i=6|i=9|i=11)result+=30;else if(i=2)result+=(28+leap(j);result=result+d1.get_day()-1;return result;void fun()switch(days()%7)case 0:w=6;break;case 1:w=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級科學上冊教學計劃
- 2025年體育教師工作計劃范本
- 新學期九年級班主任全新工作計劃
- 人教版2025年六年級下冊語文教學計劃范文
- 中班幼兒文明禮儀培養(yǎng)計劃
- 熱德育工作計劃
- 2025學年新學期藝術教育工作計劃內(nèi)容
- 《夏天預防中暑》課件
- 土地承包合同單方解除的法律條文
- 工地干活合同模板
- 游泳安全保障制度和措施
- 高中語文-《桂枝香金陵懷古》教學設計學情分析教材分析課后反思
- 小水電站風險隱患排查表
- 王朝霞一年級上冊期末試卷
- 山東師范大學《計算機基礎》期末考試復習題及參考答案
- 2023年內(nèi)蒙古自治區(qū)鄉(xiāng)村醫(yī)生招聘筆試模擬試題及答案解析
- 年產(chǎn)1000萬件日用陶瓷陶瓷廠工藝設計
- 新能源汽車概論試題庫及答案
- 城管部門廉潔教育PPT廉潔清風進城管精華心靈促發(fā)展PPTPPT課件(帶內(nèi)容)
- 年會小品劇本 搞笑年會小品劇本;過年
- 小學廉政教育讀本校本教材
評論
0/150
提交評論