C程序設計實踐報告_第1頁
C程序設計實踐報告_第2頁
C程序設計實踐報告_第3頁
C程序設計實踐報告_第4頁
C程序設計實踐報告_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

str2

。voidprint() :輸出插入后的字符串。(3)在主程序中定義 STRING類的對象test 對該類進行測試。源程序代碼:#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);();();}運行結果:2-6為選做題,其中 2,3,4為基礎題;5,6為提高題。基礎題4題目:建立一個類MOVE,將數組中最大元素的值與最小元素的值互換。具體要求如下:(1)私有數據成員int*array :一維整型數組。intn :數組中元素的個數。(2)公有成員函數MOVE(intb[],intm) :構造函數,初始化成員數據。voidexchange() :輸出平均值,并將數組中的元素按要求重新放置。voidprint() :輸出一維數組。~MOVE():析構函數。(3)在主程序中用數據{21,65,43,87,12,84,44,97,32,55} 對該類進行測試。源程序代碼:#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<<"原數組:"<<endl;for(inti=0;i<10;i++)cout<<a[i]<<'\t';cout<<endl;cout<<"交換最大值和最小值后的數組: "<<endl;MOVEa1(a,10);();();}運行結果:基礎題16題目:定義一個方陣類CMatrix,并根據給定算法實現方陣的線性變換。方陣的變換形式為:F=W*fT為原始矩陣,fT為原始矩陣的轉置,w為變換矩陣,這里設定為1001110110001具體要求如下:(1)私有數據成員int(*a)[4] :a指向方陣數組。intw[4][4] :w為變換矩陣。intm :m表示方陣的行和列數。(2)公有成員函數CMatrix(inta[][4],intm) :用給定的參數a和m初始化數據成員a和m;對變換矩陣w進行初始化,要求必須用循環(huán)實現。voidTransform() :根據上述變換算法,求出變換后的數組形式,存放在原始數組內。voidshow()l~CMatrix()

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

作為源程序代碼:#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);();();}運行結果基礎題17題目:17.定義一個類SIN,求sin(x)=x/1-x3/3!+x5/5!-x7/7!+....+(-1)n+1x(2n-1)/(2n-1)!具體要求如下:(1)私有成員數據。intx:輸入公式中x的值,求sin(x)。intn:輸入公式中n的值。(2)公有成員函數。SIN(intx,intn):構造函數,用于初始化x和n的值。intpower(intq):求q!的值。lintmi(intm,intn):求m的值。nlintfun() :用于求SIN(X)的值。lvoidshow() :輸出求得的結果。(3)在主程序中定義對象test,對該類進行測試源程序代碼:#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<<") 的結果為:"<<fun()<<endl;}};voidmain(){intx,n;cout<<"輸入一個整數x"<<endl;cin>>x;cout<<"輸入一個整數n"<<endl;cin>>n;SINtest(x,n);();}運行結果:5.提高題9題目:設計一個程序通過虛函數求長方形的面積和長方體的表面積,具體要求如下:(1)定義長方形類Rectangle保護的數據成員intl,w; 高題10題目:設計一個程序,查詢2000年1月1日(星期六)后的某天是星期幾,具體要求如下:(1)定義函數intleap(intyear) :判斷某年year是否為潤年。能夠被400整除,或者能夠被4整除但不能衩100整除的年份是潤年。(2)定義函數intf(inty,intm,intd,int*m1,int*m2) :判斷輸入的日期是否合法,其中y、m、d分別表示年、月、日, m1表示非潤年每月的天數, m2表示潤年每月的天數。(3)定義類date,表示日期私有數據成員intyear,month,day;//

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

:構造函數,用

y,m,d

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

表示w

的值);voidprint()

:輸出判斷結果。(5)在主函數中對定義的類進行測試。從鍵盤輸入一個日期,并檢查輸入數據的合法性,然后用輸入的數據和表示每月天數的數組初始化week類的對象w,調用相關成員函數,輸出判斷結果。程序運行結果如下:請輸入要查詢的日期(年月日): 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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論