C程序設(shè)計(jì)實(shí)踐報(bào)告_第1頁
C程序設(shè)計(jì)實(shí)踐報(bào)告_第2頁
C程序設(shè)計(jì)實(shí)踐報(bào)告_第3頁
C程序設(shè)計(jì)實(shí)踐報(bào)告_第4頁
C程序設(shè)計(jì)實(shí)踐報(bào)告_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課 程 實(shí) 踐 報(bào) 告設(shè)計(jì)題目:程序設(shè)計(jì)(VC++)實(shí)踐設(shè)計(jì)時(shí)間 2013-1-至2013-1-學(xué)院(系):計(jì)算機(jī)科學(xué)與工程學(xué)院2013年1月一. 實(shí)踐任務(wù)選擇題目,創(chuàng)新性題目可只選擇1題,僅選提高題應(yīng)不少于3題,僅選基礎(chǔ)題應(yīng)不少于6題,也可組合選題,還可自行選擇感興趣的題目(須經(jīng)指導(dǎo)老師審定)。對(duì)于提高題、創(chuàng)新題及游戲題可組成團(tuán)隊(duì)開發(fā),但應(yīng)制定詳細(xì)的項(xiàng)目分工說明。二.實(shí)驗(yàn)步驟及記錄(題目,源程序代碼及運(yùn)行結(jié)果)與學(xué)號(hào)對(duì)應(yīng)的題(必做題):基礎(chǔ)題12題目:建立一個(gè)STRING,將一個(gè)字符串交叉插入到另一個(gè)字符串中(假定兩字符串不等長)。例如將字符串“abcde”交叉插入字符串“ABCDEFG”的結(jié)果為“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。具體要求如下:(1)私有數(shù)據(jù)成員charstr1[60]:存放被插入的字符串。charstr2[40] :存放待插入的字符串。charstr3[100] :存放插入后的字符串。(2)公有成員函數(shù)STRING(char*s1,char*s2) :構(gòu)造函數(shù),用s1voidprocess() :將str2 中的字符串插入到 str1

和s2初始化str1 和中,存放到str3 中。

str2

。voidprint() :輸出插入后的字符串。(3)在主程序中定義 STRING類的對(duì)象test 對(duì)該類進(jìn)行測試。源程序代碼:#include<>#include<>classSTRING{charstr1[60];charstr2[40];charstr3[100];public:STRING(char*s1,char*s2){strcpy(str1,s1);strcpy(str2,s2);}voidprocess(){char*p1=str1,*p2=str2;for(inti=0;*p2;i=i+2){for(intk=strlen(str1);k>=i;k--){str1[k+1]=str1[k];}*p1=*p2;p1=p1+2;p2++;}}voidprint(){strcpy(str3,str1);cout<<str3<<endl;}};voidmain(){chars1[60]="ABCDEFG";chars2[40]="abcde";cout<<"原字符串:"<<s1<<""<<s2<<endl;cout<<"交叉插入后的字符串: ";STRINGtest(s1,s2);();();}運(yùn)行結(jié)果:2-6為選做題,其中 2,3,4為基礎(chǔ)題;5,6為提高題?;A(chǔ)題4題目:建立一個(gè)類MOVE,將數(shù)組中最大元素的值與最小元素的值互換。具體要求如下:(1)私有數(shù)據(jù)成員int*array :一維整型數(shù)組。intn :數(shù)組中元素的個(gè)數(shù)。(2)公有成員函數(shù)MOVE(intb[],intm) :構(gòu)造函數(shù),初始化成員數(shù)據(jù)。voidexchange() :輸出平均值,并將數(shù)組中的元素按要求重新放置。voidprint() :輸出一維數(shù)組。~MOVE():析構(gòu)函數(shù)。(3)在主程序中用數(shù)據(jù){21,65,43,87,12,84,44,97,32,55} 對(duì)該類進(jìn)行測試。源程序代碼:#include<>classMOVE{int*array;intn;public:MOVE(intb[],intm){n=m;array=newint[m];for(inti=0;i<n;i++)array[i]=b[i];}voidexchange(){intb[10];for(intk=0;k<n;k++)b[k]=array[k];for(inti=0;i<n;i++)for(intj=i+1;j<n;j++)if(b[j]>=b[i]){inttemp=b[i];b[i]=b[j];b[j]=temp;}intmax=b[0],min=b[n-1];for(intp=0;p<n;p++){if(array[p]==max)array[p]=min;elseif(array[p]==min)array[p]=max;}}voidprint(){for(inti=0;i<n;i++)cout<<array[i]<<'\t';cout<<endl;}~MOVE(){delete[n]array;}};voidmain(){inta[10]={21,65,43,87,12,84,44,97,32,55};cout<<"原數(shù)組:"<<endl;for(inti=0;i<10;i++)cout<<a[i]<<'\t';cout<<endl;cout<<"交換最大值和最小值后的數(shù)組: "<<endl;MOVEa1(a,10);();();}運(yùn)行結(jié)果:基礎(chǔ)題16題目:定義一個(gè)方陣類CMatrix,并根據(jù)給定算法實(shí)現(xiàn)方陣的線性變換。方陣的變換形式為:F=W*fT為原始矩陣,fT為原始矩陣的轉(zhuǎn)置,w為變換矩陣,這里設(shè)定為1001110110001具體要求如下:(1)私有數(shù)據(jù)成員int(*a)[4] :a指向方陣數(shù)組。intw[4][4] :w為變換矩陣。intm :m表示方陣的行和列數(shù)。(2)公有成員函數(shù)CMatrix(inta[][4],intm) :用給定的參數(shù)a和m初始化數(shù)據(jù)成員a和m;對(duì)變換矩陣w進(jìn)行初始化,要求必須用循環(huán)實(shí)現(xiàn)。voidTransform() :根據(jù)上述變換算法,求出變換后的數(shù)組形式,存放在原始數(shù)組內(nèi)。voidshow()l~CMatrix()

:在屏幕上顯示數(shù)組元素。:釋放動(dòng)態(tài)分配的空間。(3)在主程序中定義數(shù)組int arr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}原始數(shù)組。定義一個(gè) CMatrix 類對(duì)象test,用arr 初始化test,完成對(duì)該類的測試。

作為源程序代碼:#include<>classCMatrix{int(*a)[4];intw[4][4];intm;public:CMatrix(inta[][4],intm){this->m=m;this->a=newint[this->m][4];for(inti=0;i<this->m;i++)for(intj=0;j<this->m;j++)this->a[i][j]=a[i][j];for(i=0;i<4;i++){for(intj=0;j<4;j++)if(i+j==3||i==j)w[i][j]=1;elsew[i][j]=0;}}voidTransform(){intb[4][4];for(inti=0;i<m;i++){for(intj=0;j<m;j++)b[i][j]=a[j][i];}for(intp=0;p<4;p++){for(intq=0;q<4;q++)a[p][q]=w[p][0]*b[0][q]+w[p][1]*b[1][q]+w[p][2]*b[2][q]+w[p][3]*b[3][q];}}voidshow(){for(inti=0;i<4;i++){for(intj=0;j<4;j++)cout<<a[i][j]<<'\t';cout<<endl;}}~CMatrix(){delete[m]a;}};voidmain(){intarr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};cout<<"原始方陣:"<<endl;for(inti=0;i<4;i++){for(intj=0;j<4;j++)cout<<arr[i][j]<<'\t';cout<<endl;}cout<<" 變換后的方陣:"<<endl;CMatrixtest(arr,4);();();}運(yùn)行結(jié)果基礎(chǔ)題17題目:17.定義一個(gè)類SIN,求sin(x)=x/1-x3/3!+x5/5!-x7/7!+....+(-1)n+1x(2n-1)/(2n-1)!具體要求如下:(1)私有成員數(shù)據(jù)。intx:輸入公式中x的值,求sin(x)。intn:輸入公式中n的值。(2)公有成員函數(shù)。SIN(intx,intn):構(gòu)造函數(shù),用于初始化x和n的值。intpower(intq):求q!的值。lintmi(intm,intn):求m的值。nlintfun() :用于求SIN(X)的值。lvoidshow() :輸出求得的結(jié)果。(3)在主程序中定義對(duì)象test,對(duì)該類進(jìn)行測試源程序代碼:#include<>classSIN{private:intx;intn;public:SIN(intx,intn){this->x=x;this->n=n;}intpower(intq){ints=1;if(q<=1)return1;while(q>1){s=s*q;q--;}returns;}intmi(intm,intn){inttemp=1;for(inti=1;i<=n;i++){temp*=m;}returntemp;}intfun(){intresult=0;for(inti=0;i<=n;i++){result+=mi(-1,i)*mi(x,2*i+1)/power(2*i+1);}returnresult;}voidshow(){cout<<"sin("<<x<<") 的結(jié)果為:"<<fun()<<endl;}};voidmain(){intx,n;cout<<"輸入一個(gè)整數(shù)x"<<endl;cin>>x;cout<<"輸入一個(gè)整數(shù)n"<<endl;cin>>n;SINtest(x,n);();}運(yùn)行結(jié)果:5.提高題9題目:設(shè)計(jì)一個(gè)程序通過虛函數(shù)求長方形的面積和長方體的表面積,具體要求如下:(1)定義長方形類Rectangle保護(hù)的數(shù)據(jù)成員intl,w; 高題10題目:設(shè)計(jì)一個(gè)程序,查詢2000年1月1日(星期六)后的某天是星期幾,具體要求如下:(1)定義函數(shù)intleap(intyear) :判斷某年year是否為潤年。能夠被400整除,或者能夠被4整除但不能衩100整除的年份是潤年。(2)定義函數(shù)intf(inty,intm,intd,int*m1,int*m2) :判斷輸入的日期是否合法,其中y、m、d分別表示年、月、日, m1表示非潤年每月的天數(shù), m2表示潤年每月的天數(shù)。(3)定義類date,表示日期私有數(shù)據(jù)成員intyear,month,day;//

分別表示某年某月某日公有成員函數(shù):date(inty,intm,intd) :構(gòu)造函數(shù),用形參分別初始化數(shù)據(jù)成員;intget_year() :訪問私有成員year;intget_month() :訪問私有成員month;intget_day() :訪問私有成員day;voidshow() :以指定格式輸出數(shù)據(jù)成員。(4)定義類week,判斷某天是星期幾私有數(shù)據(jù)成員dated1;// 日期類的對(duì)象,表示某日intm1[12];//存儲(chǔ)非潤年每月的天數(shù)31,28,31,30,31,30,31,31,30,31,30,31intm2[12];//存儲(chǔ)潤年每月的天數(shù)31,29,31,30,31,30,31,31,30,31,30,31intw;//表示用0表示星期天,1表示星期一,以此類推6表示星期六公有成員函數(shù)week(inty,intm,intd,int*p1,int*p2)

:構(gòu)造函數(shù),用

y,m,d

初始化日期,用p1,p2分別初始化m1,m2;intdays() :計(jì)算d1距2000年1月1日的時(shí)間間隔(天數(shù));voidfun() :根據(jù)days()的計(jì)算結(jié)果判斷d1是星期幾(求以0~6

表示w

的值);voidprint()

:輸出判斷結(jié)果。(5)在主函數(shù)中對(duì)定義的類進(jìn)行測試。從鍵盤輸入一個(gè)日期,并檢查輸入數(shù)據(jù)的合法性,然后用輸入的數(shù)據(jù)和表示每月天數(shù)的數(shù)組初始化week類的對(duì)象w,調(diào)用相關(guān)成員函數(shù),輸出判斷結(jié)果。程序運(yùn)行結(jié)果如下:請(qǐng)輸入要查詢的日期(年月日): 20099152009/9/15,是星期二。源程序代碼:#include<>intleap(intyear){if(year%400==0||year%100!=0&&year%4==0)return1;elsereturn0;}intf(inty,intm,intd,int*m1,int*m2){if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d>31)return0;elseif((m==4||m==6||m==9||m==11)&&d>30)return0;elsereturn1;while(leap(y))if(m==2&&(d==28||d>=30))return0;elsereturn1;while(!(leap(y)))if(m==2&&(d==29||d>=30))return0;elsereturn1;}classdate{intyear,month,day;public:date(inty,intm,intd){year=y;month=m;day=d;}intget_year(){returnyear;}intget_month(){returnmonth;}intget_day(){returnday;}voidshow(){cout<<year<<"/"<<month<<"/"<<day<<",";}};classweek{dated1;intm1[12];intm2[12];intw;public:week(inty,intm,intd,int*p1,int*p2):d1(y,m,d){for(inti=0;i<12;i++)m1[i]=p1[i];for(intj=0;j<12;j++)m2[i]=p2[i];w=0;}intdays(){inti,j,result=0;for(j=2000;j<();j++)result+=(leap(j)+365);for(i=1;i<();i++){if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)result+=31;elseif(i==4||i==6||i==9||i==11)result+=30;elseif(i==2)result+=(28+leap(j));}result=result+()-1;returnresult;}voidfun(){switch(days()%7){case0:w=6;break;case1:w=0;break;case2:w=1;break;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論