久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

C++俄羅斯方塊實(shí)驗(yàn)報(bào)告(附實(shí)驗(yàn)體會(huì))[合集五篇]

時(shí)間:2019-05-12 14:32:03下載本文作者:會(huì)員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《C++俄羅斯方塊實(shí)驗(yàn)報(bào)告(附實(shí)驗(yàn)體會(huì))》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《C++俄羅斯方塊實(shí)驗(yàn)報(bào)告(附實(shí)驗(yàn)體會(huì))》。

第一篇:C++俄羅斯方塊實(shí)驗(yàn)報(bào)告(附實(shí)驗(yàn)體會(huì))

程序設(shè)計(jì)綜合實(shí)驗(yàn)

設(shè)計(jì)文檔

惠州學(xué)院

HUIZHOU UNIVERSITY

課程名稱: 程序設(shè)計(jì)綜合實(shí)驗(yàn)

姓名:實(shí)驗(yàn)名稱: 俄羅斯方塊 學(xué)號(hào):任課教師:

專業(yè):班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)1班

實(shí)驗(yàn)時(shí)間:

計(jì)算機(jī)科學(xué)與技術(shù)

綜合實(shí)驗(yàn)項(xiàng)目:俄羅斯方塊游戲

1、問題需求

(1)游戲等級(jí):游戲分為1-10十個(gè)等級(jí),等級(jí)越高,方塊下落速度越快;(2)由方向鍵控制游戲:上鍵控制方塊變形、下鍵控制方塊下移并判斷是否有消行、左鍵控制方塊左移、右鍵控制方塊右移;

(3)游戲積分:一次性消的行數(shù)越多加的分?jǐn)?shù)越多,當(dāng)消行每超過30行自動(dòng)提高一個(gè)游戲等級(jí)。

2、總體設(shè)計(jì):

(1)用數(shù)組存放方塊(2)輸出地圖

(3)在地圖里面輸出方塊(4)開始游戲(5)方塊的旋轉(zhuǎn)(6)方塊是否能下落(7)判斷方塊是否能下落(8)提示下一個(gè)即將下落的方塊(9)控制方塊的下落速度

(10)分成10等級(jí),等級(jí)越高方塊下落得更快(11)消行處理(12)游戲結(jié)束

3、詳細(xì)設(shè)計(jì)設(shè)計(jì)說明:本程序運(yùn)行代碼如下:

#include #include #include #include “colorConsole.h”

#define SQUARE_COLOR FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY //方塊的顏色 #define up

#define down

#define left

#define right

#define esc #define MAPW

//地圖的寬度

#define MAPH

//地圖的高度

BOOL isavailable(int a[],int x,int y,int w,int h);//判定是否能放下 void turn(int a[][4],int w,int h,int *x,int y);

//轉(zhuǎn)動(dòng) int * create();

//創(chuàng)建方塊 void init();

//初始化工作

void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors);void clearcache();

//清除鍵盤緩沖區(qū) void end();void clearsquare(int *a,int w,int h,int x,int y);void gameover();void deletemap(int m[][MAPW],int row,int w,int h);//消除一行

int dx=30,dy=5;

//屏幕上的偏移量 int score=0,level=0;

int map[MAPH][MAPW];int a1[4][4]={{1},{1,1,1}};int a2[4][4]={{0,1},{1,1,1}};int a3[4][4]={{1,1},{0,1,1}};int a4[4][4]={{0,0,1},{1,1,1}};int a5[4][4]={{0,1,1},{1,1}};int a6[4][4]={{1,1,1,1}};int a7[4][4]={{1,1},{1,1}};int a[4][4];

int main(){

init();int *b=NULL;b=create();

//預(yù)創(chuàng)建方塊 int q=0;int sign,blank,x,y;while(1){

for(int i=0;i<4;i++)

//復(fù)制方塊

for(int j=0;j<4;j++)

if(a[i][j]=*(b+i*4+j))blank=i;

y=1-blank;x=4;clearsquare(&a[0][0],4,4,13,13);b=create();HANDLE handle;handle=initiate();WORD wColors[1]={FOREGROUND_RED| drawblocks(b,4,4,13,13,wColors,1);wColors[0]=SQUARE_COLOR;drawblocks(&a[0][0],4,4,x,y,wColors,1);clearcache();char string[5];wColors[0]=FOREGROUND_RED| textout(handle,26+dx,5+dy,wColors,1,itoa(score,string,10));textout(handle,26+dx,9+dy,wColors,1,itoa(level,string,10));sign=1;while(sign){

int delay=0,max_delay=100-10*level;//延遲量 while(delay

if(_kbhit())//用if避免按住鍵使方塊卡住 {

switch(key){ case up:

clearsquare(&a[0][0],4,4,x,y);turn(a,4,4,&x,y);draw=1;break;

int draw=0;int key=_getch();FOREGROUND_GREEN|FOREGROUND_INTENSITY };FOREGROUND_GREEN|FOREGROUND_INTENSITY;

case down:

}

}

}

delay=max_delay;break;

if(isavailable(&a[0][0],x-1,y,4,4)){

}

clearsquare(&a[0][0],4,4,x,y);x--;draw=1;

case left:

break;

if(isavailable(&a[0][0],x+1,y,4,4)){

} break;end();break;

clearsquare(&a[0][0],4,4,x,y);x++;draw=1;

case right:

case esc:

if(draw){

}

HANDLE handle;handle=initiate();

WORD wColors[1]={SQUARE_COLOR};drawblocks(&a[0][0],4,4,x,y,wColors,1);draw=0;

_sleep(8);delay++;if(isavailable(&a[0][0],x,y+1,4,4))//判斷是否能下移 {

clearsquare(&a[0][0],4,4,x,y);y++;

HANDLE handle;

}

}

}

} else {

}

handle=initiate();

WORD wColors[1]={SQUARE_COLOR};drawblocks(&a[0][0],4,4,x,y,wColors,1);

sign=0;

//標(biāo)記,使跳出 while(sign)循環(huán),產(chǎn)生新方塊 if(y<=1)gameover();

//是否結(jié)束 for(int i=0;i<4;i++)

//放下方塊

for(int j=0;j<4;j++)

if(a[i][j]&&((i+y)

map[i+y][j+x]=a[i][j];

int full,k=0;

for(i=y;i

}

full=1;

for(int j=1;j<11;j++){

}

deletemap(map,i,MAPW,MAPH);k++;

q++;

score=score+k;level=min(q/30,9);if(!map[i][j])full=0;

if(full)

//消掉一行

return EXIT_SUCCESS;BOOL isavailable(int a[],int x,int y,int w,int h){

for(int i=max(y,1);i

}

return 0;return 1;int * create(){

} void init(){

for(int i=0;i<20;i++){

} for(i=0;i<12;i++){

} map[0][i]=-1;map[19][i]=-1;map[i][0]=-2;map[i][11]=-2;

//初始化工作

int * a=NULL;int c=rand()%7;switch(c){ case 0:

} return a;a=&a1[0][0];break;a=&a2[0][0];break;a=&a3[0][0];break;a=&a4[0][0];break;a=&a5[0][0];break;a=&a6[0][0];break;a=&a7[0][0];break;case 1: case 2: case 3: case 4: case 5: case 6:

} map[0][0]=-3;map[0][11]=-3;map[19][0]=-3;map[19][11]=-3;HANDLE handle;handle=initiate();WORD wColors[1]={ FOREGROUND_GREEN|FOREGROUND_INTENSITY};textout(handle,26+dx,3+dy,wColors,1,“分?jǐn)?shù)”);textout(handle,26+dx,7+dy,wColors,1,“等級(jí)”);textout(handle,26+dx,11+dy,wColors,1,“下一個(gè)方塊提示”);wColors[1]=FOREGROUND_RED|FOREGROUND_INTENSITY;drawblocks(&map[0][0],12,20,0,0,wColors,1);textout(handle,dx,dy,wColors,1,“◇══════════◇”);wColors[0]= FOREGROUND_GREEN|FOREGROUND_INTENSITY;textout(handle,dx-16,dy,wColors,1,“按任意鍵開始”);wColors[0]=FOREGROUND_RED|FOREGROUND_INTENSITY;textout(handle,dx-15,dy+3,wColors,1,“制作者”);wColors[0]=FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY;textout(handle,dx-15,dy+5,wColors,1,“趙強(qiáng)”);int x=_getch();srand(x);textout(handle,dx-16,dy,wColors,1,“

”);void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors){

HANDLE handle;handle = initiate();int temp;

for(int i=0;i

for(int j=0;j

if((temp=a[i*w+j])&&y+i>0){

if(temp==-3)

textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,“◆”);

}

}

else if(temp==-2)

textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,“║”);textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,“═”);textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,“■”);

else if(temp==-1)else if(temp==1)void clearcache(){

} void end(){ } void turn(int a[][4],int w,int h,int *x,int y){

int b[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};int sign=0,line=0;for(int i=h-1;i>=0;i--){

} for(int j=0;j

{

} line++;sign=0;if(a[i][j]){

}

b[j][line]=a[i][j];sign=1;exit(EXIT_SUCCESS);while(_kbhit()){ } _getch();if(sign)

for(i=0;i<4;i++)

if(isavailable(&b[0][0],*x-i,y,w,h))

{

*x-=i;

for(int k=0;k

for(int j=0;j

a[k][j]=b[k][j];

break;} } void clearsquare(int *a,int w,int h,int x,int y){ HANDLE handle;handle=initiate();WORD wColors[1]={SQUARE_COLOR};for(int i=0;i

for(int j=0;j

if(a[i*w+j]&&i+y>0)

textout(handle,2*(x+j)+dx,y+i+dy,wColors,1,“ }

void gameover(){ HANDLE handle;handle=initiate();WORD wColors[1]={FOREGROUND_RED| FOREGROUND_GREEN};textout(handle,7+dx,10+dy,wColors,1,”游戲結(jié)束“);clearcache();_getch();exit(EXIT_SUCCESS);}

void deletemap(int m[][MAPW],int row,int w,int h){ HANDLE handle;handle=initiate();WORD wColors[1]={SQUARE_COLOR};textout(handle,2+dx,row+dy,wColors,1,”﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌“);

”);

} _sleep(100);for(int i=row;i>1;i--){

} for(i=1;i

} BOOL textout(HANDLE hOutput,int x,int y,WORD wColors[],int nColors,LPTSTR lpszString){

DWORD cWritten;

BOOL fSuccess;

COORD coord;

coord.X = x;

// start at first cell

coord.Y = y;

//

of first row

fSuccess = WriteConsoleOutputCharacter(hOutput,// screen buffer handle

lpszString,// pointer to source string

lstrlen(lpszString), // length of string

coord,// first cell to write to

&cWritten);

// actual number written

if(!fSuccess)

cout<<“error:WriteConsoleOutputCharacter”<

for(;fSuccess && coord.X < lstrlen(lpszString)+x;coord.X += nColors)HANDLE hOutput;

hOutput = GetStdHandle(STD_OUTPUT_HANDLE);return hOutput;

{

fSuccess = WriteConsoleOutputAttribute(hOutput,// 屏幕緩存處理

wColors,// pointer to source string

nColors,// length of string

coord,// first cell to write to

&cWritten);

// actual number written

}

if(!fSuccess)

return 0;}

4、程序運(yùn)行結(jié)果截圖: cout<<“error:WriteConsoleOutputAttribute”<

方塊左移

方塊右移

下一個(gè)方塊開始下落

方塊變形

消一行,增加1分

成功消多行

消多行后分?jǐn)?shù)增加更多

消完30行后,提升一個(gè)等級(jí)

方塊疊到頂端后游戲結(jié)束

5、程序使用說明:

(1)按任意鍵開始游戲

(2)控制方塊下落位置進(jìn)行消行處理

(3)成功消行后加分,當(dāng)消30行之后等級(jí)升一級(jí),最高達(dá)到10等級(jí)

(4)當(dāng)產(chǎn)生的新方塊不能再下落時(shí),游戲結(jié)束。(5)過程中可以按ESC直接退出游戲

6、本實(shí)驗(yàn)的心得體會(huì)

上個(gè)學(xué)期學(xué)習(xí)C++的時(shí)候,主要是局限于讀課本,記住課本上的一些知識(shí)和概念,但很少自己親自動(dòng)手去編寫代碼,總是眼高手低,當(dāng)真正的去編寫這個(gè)俄羅斯游戲的時(shí)候就體會(huì)到編寫代碼真的好難,尤其是剛開始的想的時(shí)候,根本不知道如何下手。后來通過上網(wǎng)查詢和請(qǐng)教一些編程比較好的同學(xué)后才有了一個(gè)基本的思路,自己又重新翻閱了一下課本,將課本上的知識(shí)又重新細(xì)致的復(fù)習(xí)了一遍,最終借助于網(wǎng)絡(luò)和同學(xué)的幫助完成了這個(gè)實(shí)驗(yàn)。通過這個(gè)實(shí)驗(yàn)發(fā)現(xiàn)自己在編程方面還有很大的欠缺,編程能力很差勁,不過通過這個(gè)實(shí)驗(yàn),也讓我對(duì)上學(xué)期學(xué)習(xí)的C++知識(shí)有了一個(gè)很好很全面的復(fù)習(xí),這是這個(gè)實(shí)驗(yàn)帶給我最大的收獲。必須要親自動(dòng)手多寫,多看代碼才能真正的學(xué)好C++。

第二篇:C++實(shí)驗(yàn)報(bào)告

姓名:XX 學(xué)院:XXX 班級(jí):XXX 學(xué)號(hào):XXX

i++;

} while(i<=10);cout<<“sum=”<

#include using namespace std;void main(){ int i(1),sum(0);

for(i;i<=10,i++)

{

sum+=i;

}

cout<<“sum=”< using namespace std;const float pi=3.1416;void main(){ int itype;

cout<<“不是合法的輸入”< using namespace std;struct riqi { int year;int mon;int day;int hour;int minut;int second;};void main(){ riqi a;cout<<“輸入時(shí)間日期”<>a.year;cout<<“輸入月份”<

實(shí)驗(yàn)

三、函數(shù)的應(yīng)用(2學(xué)時(shí))

1、實(shí)驗(yàn)?zāi)康模?/p>

掌握函數(shù)的定義和調(diào)用方法。練習(xí)重載函數(shù)使用。練習(xí)函數(shù)模板的使用 練習(xí)使用系統(tǒng)函數(shù)。

在main()函數(shù)中提示輸入兩個(gè)整數(shù)x,y,使用cin語句得到x,y的值,調(diào)用pow(x,y)函數(shù)計(jì)算x的y次冪的結(jié)果,再顯示出來。程序名:lab3_4.cpp。

編寫遞歸函數(shù)int fib(int n),在主程序中輸入n的值,調(diào)用fib函數(shù)計(jì)算Fibonacci級(jí)數(shù)。公式為fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1。使用if語句判斷函數(shù)的出口,在程序中用cout語句輸出提示信息。程序名:lab3_5.cpp。

7)調(diào)試操作步驟如下:

選擇菜單命令Build|Start Debug |Step In,系統(tǒng)進(jìn)入單步執(zhí)行狀態(tài),程序開始運(yùn)行,并出現(xiàn)一個(gè)DOS窗口,此時(shí)光標(biāo)停在main()函數(shù)的入口處。

把光標(biāo)移到語句answer=fib(n)前,從Debug菜單單擊Run To Cursor,在程序運(yùn)行的DOS窗口中按提示輸入數(shù)字10,這時(shí)回到可視界面中,光標(biāo)停在第11行,觀察一下n的值。

從Debug菜單中單擊Step Into,程序進(jìn)入fib函數(shù),觀察一下n的值,把光標(biāo)移到語句return(fib(n-2)+fib(n-1))前,從Debug菜單單擊Run to Cursor,再單擊Step Into,程序遞歸調(diào)用fib函數(shù),又進(jìn)入fib函數(shù),觀察n的值。

繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對(duì)函數(shù)調(diào)用和遞歸調(diào)用的理解。

再試試Debug菜單欄中的別的菜單項(xiàng),熟悉Debug的各種方法。

4、實(shí)驗(yàn)原理

C++中函數(shù)的重載使得同樣的函數(shù)名下,只要參數(shù)類型、數(shù)目不同時(shí),即可根據(jù)輸入的數(shù)據(jù)進(jìn)行相應(yīng)的函數(shù)調(diào)用,使用起來簡單方便。

5、思考與體會(huì)

C++中,函數(shù)的運(yùn)用與之前學(xué)過的C語言既有相同之處,也有著不同的地方。相同的地方在于格式、用法等框架上的不變。但是C語言中對(duì)于同樣的函數(shù)名是只能夠申明一種函數(shù)的,倘若有相同的函數(shù)名出現(xiàn)系統(tǒng)即會(huì)報(bào)錯(cuò),所以用起來有時(shí)是極為不便

0

//參數(shù)為兩個(gè)雙精度浮點(diǎn)形的函數(shù) int max1(double a,double b){ a=a>b?a:b;return a;} //參數(shù)為三個(gè)雙精度浮點(diǎn)形的函數(shù) int max1(double a,double b,double c){ a=a>b?a:b;a=a>c?a:c;return a;} void main(void){ int a;double b;a=max1(1,2);cout<

Lab3_3: #include using namespace std;int max1(int a,int b){ a=a>b?a:b;return a;} int max1(int a,int b,int c){ a=a>b?a:b;a=a>c?a:c;return a;}

int main(){ int i,j,k;cout<<“請(qǐng)輸入要比較的3個(gè)數(shù):

”<

2131415

public: Rank rank;int frequency;float voltage;CPU(Rank r,int f,float v){

//構(gòu)造函數(shù)

cout<<“構(gòu)造了一個(gè)CPU”<

rank=r;

frequency=f;

voltage=v;} void run(){

cout<<“CPU開始運(yùn)行”<

} void stop(){

cout<<“CPU停止運(yùn)行”<

cout<<“RANK=”<

cout<<“frequency=”<

cout<<“voltage=”<

};

int main(){ CPU cpu(p5,500,2000);cpu.run();cpu.show();cpu.stop();return 0;}

Lab4_2 #include using namespace std;enum Rank{p1=1,p2,p3,p4,p5,p6,p7};//CPU類 class CPU{ public:

//析構(gòu)函數(shù)-17

computer(Rank r,int f,float v){

CPU cpu(r,f,v);

//定義CPU對(duì)象

RAM ram(1);

//定義RAM對(duì)象

CDROM cdrom(1);

//定義CDROM對(duì)象

cpu.run();

cpu.show();

cpu.stop();} };int main(){ computer com(p4,300,3000);return 0;}

實(shí)驗(yàn)

七、繼承與派生(一、二)4學(xué)時(shí)

1、實(shí)驗(yàn)?zāi)康模?/p>

學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類。熟悉不同繼承方式下對(duì)基類成員的訪問控制。學(xué)習(xí)利用虛基類解決二義性問題

2、實(shí)驗(yàn)任務(wù) a)定義一個(gè)基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(int n)中直接給age賦值,看看會(huì)有什么問題,把a(bǔ)ge改為公有成員變量,還會(huì)有問題嗎?編程試試看。b)定義一個(gè)基類BaseClass,有整型成員變量Number ,構(gòu)造其派生類DerivedClass,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。c)定義一個(gè)車(vehicle)基類,具有MaxSpeed、Weight等成員變量,Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類。自行車類有高度(height)等屬性,汽車類有座位數(shù)(SeatNum)等屬性。從bicycle和motorcar派生出摩托車(motorcycle)類,在繼承過程中,注意把vehicle設(shè)置為虛基類。如果不把vehicle設(shè)置為虛基類,會(huì)有什么問題?編程試試看。

3、實(shí)驗(yàn)步驟

編寫程序定義基類Animal,成員變量age定義為私有的。構(gòu)造派生類dog,在其成員函數(shù)SetAge(int n)中直接對(duì)age賦值時(shí),會(huì)出現(xiàn)類似以下的錯(cuò)誤提示:

error C2248:’age’:cannot access private member declared in class ‘Animal’

error C2248:’age’:cannot access private member declared in class ‘Animal’

把a(bǔ)ge改為公有成員變量后重新編譯就可以了。程序名為:lab7_1.cpp

0

確方便我們編程。

6、部分參考代碼

Lab7_1 #include using namespace std;

class Animal{

public: int age;};

class dog:public Animal{ public: int SetAge(int n){

age=n;

return age;} };

void main(void){ int age;dog d;age=d.SetAge(3);cout<<“age=”<

Lab7_2 #include using namespace std;class BaseClass{ public: int Number;BaseClass(){

cout<<“這是父類的構(gòu)造函數(shù)”<

cout<<“這是父類的析構(gòu)函數(shù)”<

//Motorcycle繼承bicycle和motorcar類

class motorcycle:public bicycle,public motorcar{ public: motorcycle(int seat,double H,double MS,double W){

SeatNum=seat;

height=H;

MaxSpeed=MS;

Weight=W;} void show(){

cout<<“seatnum=”<

cout<<“height=”<

cout<<“MaxSpeed=”<

cout<<“weight=”<

int main(){ motorcycle che(3,30.33,90.84,500);che.show();return 0;} 實(shí)驗(yàn)

八、多態(tài)性2學(xué)時(shí)

1、實(shí)驗(yàn)?zāi)康模?/p>

掌握運(yùn)算符重載的方法

習(xí)使用虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)多態(tài)性。

2、實(shí)驗(yàn)任務(wù)

a)定義Point類,有坐標(biāo)x,y兩個(gè)成員變量;對(duì)Point類重載“++”、“--”運(yùn)算符,實(shí)現(xiàn)對(duì)坐標(biāo)值的改變。

定義一個(gè)車(vehicle)基類,有Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類,從bicycle和motorcar派生出摩托車(motorcycle)類,它們都有Run、Stop等成員函數(shù)。觀察虛函的作用。

3、實(shí)驗(yàn)步驟

編寫程序定義Point類,在類中定義整型的私有成員變量x,y,定義成員函數(shù)Point& operator++();Point operator++(int);以實(shí)現(xiàn)對(duì)Point類重載“++”運(yùn)算符,定義成函數(shù)Point& operator –();Point operator

也就是函數(shù)的重載。

6、部分參考代碼

Lab8_1 #include using namespace std;

class Point{ public: Point(double x=0.0,double y=0.0):xray(x),yray(y){} Point operator++(int);Point operator--(int);void show();private: double xray;double yray;};

Point Point::operator++(int){ return Point(xray++,yray++);}

Point Point::operator--(int){ return Point(xray--,yray--);}

void Point::show(){ cout<<“x坐標(biāo)為”<

int main(){ Point p(4.5,6.5);cout<<“進(jìn)行運(yùn)算前的情況:”<

show(&v);return 0;}

第三篇:信息系C++實(shí)驗(yàn)報(bào)告(實(shí)驗(yàn)8)

信息工程系課程實(shí)驗(yàn)報(bào)告

學(xué)

號(hào)

實(shí)驗(yàn)學(xué)時(shí) 2 實(shí)驗(yàn)時(shí)間 2017 年 12 月 1 日

實(shí)驗(yàn)地點(diǎn)

指導(dǎo)教師

課程名稱 C++程序設(shè)計(jì) 專

業(yè)班

級(jí)

成績

實(shí)驗(yàn)項(xiàng)目 類和對(duì)象(構(gòu)造函數(shù)、析構(gòu)函數(shù)、組合類、友元)

實(shí) 驗(yàn) 目 的 1、理解類的概念;2、掌握聲明類的方法; 3、掌握對(duì)象的定義和初始化 4、掌握通過類編寫程序 5、構(gòu)造函數(shù)、析構(gòu)函數(shù) 6、對(duì)象數(shù)組、對(duì)象引用、對(duì)象指針 7、組合類 8、靜態(tài)成員 9、友元 實(shí) 驗(yàn) 內(nèi) 容 和 要 求 1、閱讀“程序 1.txt”,然后回答以下問題:

1)行 A 定義了一個(gè)類 Test 的對(duì)象,它將調(diào)用哪個(gè)構(gòu)造函數(shù)?

2)行 A 能否寫成 Test t1();?

為什么不可以或者可以?

3)行 B 定義了另一個(gè)對(duì)象,它將調(diào)用哪個(gè)構(gòu)造函數(shù)?

4)解釋第二個(gè)構(gòu)造函數(shù)的函數(shù)體中用到 this 指針的原因:?

5)解釋行 C 數(shù)組 p 的含義?

2、閱讀“程序 2.txt”,然后回答以下問題:

1)行 A 中動(dòng)態(tài)申請(qǐng)的數(shù)組為何還要將數(shù)組大小加 1?

2)String 類中是否還存在默認(rèn)的構(gòu)造函數(shù)“String();“?

3)行 B 開始的構(gòu)造函數(shù)稱之為

構(gòu)造函數(shù)。解釋其功能

4)執(zhí)行行 C 時(shí)會(huì)調(diào)用哪個(gè)構(gòu)造函數(shù)?

5)上機(jī)驗(yàn)證該程序。

3、閱讀“程序 3.txt”,然后回答以下問題:

1)執(zhí)行行 A 后,a1.c=

a2.c=

A::c=

2)執(zhí)行行 B 后,a1.c=

a2.c=

A::c=

3)行 B 可否改為”A::c=400;”

為什么

4)c 為類 A 的私有成員,但行 D 中為何通過 t 能直接訪問成員 c?

5)執(zhí)行行 E 后,a1.c=

a2.c=

A::c=

第 1 題、第 2 題和第 3 題不用抄題目,只需寫答案在報(bào)告紙上。

4、定義一個(gè)點(diǎn)類 Point,包括數(shù)據(jù)成員點(diǎn)的 x 坐標(biāo)和 y 坐標(biāo)(int)、構(gòu)造函數(shù)以及設(shè)置點(diǎn) x,y 坐標(biāo)的成員函數(shù)。定義一個(gè) CRect 類,代表一個(gè)矩形,要求

CRect 類中有代表矩形的左上角坐標(biāo)(x1,y1)和右下角坐標(biāo)(x2,y2)點(diǎn)類的對(duì)象(組合類),要求 CRect 類中有三個(gè)成員函數(shù) RectHeight()、RectWidth()以及area(),通過這三個(gè)函數(shù)能得到矩形的高和寬和面積。

要求 CRect 類中有構(gòu)造函數(shù),要求 CRect 類中有成員函數(shù) SetR(),通過這函數(shù)能設(shè)置矩形的左上角坐標(biāo)和右下角坐標(biāo)。

5、建立一個(gè)類 primenum,求指定數(shù)據(jù)范圍內(nèi)的所有質(zhì)數(shù)。具體要求如下:

1)私有數(shù)據(jù)成員 int data[25]

依次存放指定范圍內(nèi)求出的所有質(zhì)數(shù) int low,high

存放指定的數(shù)據(jù)范圍的下限和上限 int num

存放 low 與 high 之間的質(zhì)數(shù)的個(gè)數(shù)

2)公有成員函數(shù) primenum(int low,int high)

構(gòu)造函數(shù),初始化 low 和 high,同時(shí)在函數(shù)體內(nèi)初始化 num 為 0 int isprime(int x)

判斷 x 是否為質(zhì)數(shù)。若是質(zhì)數(shù),返回 1;否則,返回 0.void process()

求指定范圍內(nèi)的所有質(zhì)數(shù),把它們依次存放在數(shù)組 data,并將求出的質(zhì)數(shù)個(gè)數(shù)存放在 num 中 void print()

輸出求出的質(zhì)數(shù)個(gè)數(shù)以及所有質(zhì)數(shù),要求每行輸出 5 個(gè)質(zhì)數(shù)。

3)在主函數(shù)中對(duì)該類進(jìn)行測(cè)試。例如:定義一個(gè) primenum 類的對(duì)象 test,指定查找范圍為 100~200,求出 100~200 之間的所有質(zhì)數(shù)。

實(shí) 驗(yàn) 過 程(算法、源代碼以及注釋)

實(shí) 驗(yàn) 結(jié) 果(記錄程序執(zhí)行的結(jié)果,分析結(jié)果)

實(shí) 驗(yàn) 總 結(jié)(記錄程序在調(diào)試過程中出現(xiàn)的問題以及解決方法、總結(jié)收獲和心得)

第四篇:C++實(shí)驗(yàn)

上機(jī)實(shí)驗(yàn):

1、回文是指正讀,反讀均相同的字符序列,如“abba”和“abdba”均是回文,但是“good”不是回文,試用STACK類編寫該程序。

#include #include #include int IsPalindrome(const char *cScr);void main(void){ char cStr[21];while(1){ gets(cStr);printf(“%dn”,IsPalindrome(cStr));} } int IsPalindrome(const char *cScr){ int iLen = strlen(cScr);//預(yù)留數(shù)組首元素,棧頂從第二元素開始

int top = 1;char *cMyStack =(char *)malloc((iLen/2+1)*sizeof(char));//定位對(duì)原始數(shù)組的檢測(cè)索引初始位置 cMyStack[0] = iLen/2;if(1 == iLen%2){ ++cMyStack[0];}

//將原始數(shù)組的一半元素入棧 for(top=1;top<=iLen/2;top++){ cMyStack[top] = *(cScr+top-1);} //從棧頂開始依次匹配

while(*(cScr+cMyStack[0])== cMyStack[--top] && cMyStack[0]++ < iLen){} if(0 == top){//是回文數(shù) free(cMyStack);return 1;} else {//不是回文數(shù)

free(cMyStack);return 0;} } 運(yùn)行結(jié)果:

2.利用兩個(gè)棧類S1、S2模擬一個(gè)隊(duì)列時(shí),編寫一程序利用棧的運(yùn)算實(shí)現(xiàn)隊(duì)列的插入、刪除以及判斷隊(duì)列空的運(yùn)算。

#include #include #include using namespace std;template class stack2queue{ public: void pushBack(T);void popFront();T& front();bool empty()const;private: stack mStack1;stack mStack2;};template void stack2queue::pushBack(T x){ mStack1.push(x);}

template void stack2queue::popFront(){ if(mStack2.empty()){ while(!mStack1.empty()){ mStack2.push(mStack1.top());mStack1.pop();} }

assert(!mStack2.empty());mStack2.pop();} template T& stack2queue::front(){ if(mStack2.empty()){ while(!mStack1.empty()){ mStack2.push(mStack1.top());mStack1.pop();} } assert(!mStack2.empty());return mStack2.top();} template bool stack2queue::empty()const{ return(mStack1.empty()&& mStack2.empty());} template void printQueue(stack2queue q){ cout << “From front to back:/t(”;if(!q.empty()){ cout << q.front();q.popFront();while(!q.empty()){ cout << “, ” << q.front();q.popFront();} }else{ cout << “NULL”;} cout << “)” << endl;} int main(){ stack2queue sq;

sq.pushBack(1);printQueue(sq);sq.pushBack(2);printQueue(sq);sq.pushBack(3);printQueue(sq);sq.popFront();printQueue(sq);sq.popFront();printQueue(sq);sq.popFront();printQueue(sq);return 0;} 運(yùn)行結(jié)果:

實(shí)驗(yàn)2:

聲明復(fù)數(shù)的類Complex,使用友元函數(shù)add實(shí)現(xiàn)復(fù)數(shù)的加法。

#include < iostream > using namespace std;

class Complex { private:

double real, image;public :

Complex(){}

Complex(double a,double b)

{

real = a;image = b;}

void setRI(double a, double b){

real = a;image = b;} double getReal(){ return real;}

double getImage(){ return image;} void print(){ if(image>0)

cout<<“復(fù)數(shù):”<< real <<“ + ”<< image <<“i”<< endl;if(image<0)

cout<<“復(fù)數(shù):”<< real <<“-”<< image <<“i”<< endl;}

friend Complex add(Complex ,Complex);//聲明友元函數(shù) };

Complex add(Complex c1, Complex c2)//定義友元函數(shù)

{

Complex c3;

c3.real = c1.real + c2.real;//訪問Complex類中的私有成員

c3.image = c1.image + c2.image;return c3;}

void main(){

Complex c1(29, 0.634), c2, c3;c2.setRI(85,106.012);c3 = add(c1, c2);

cout<<“復(fù)數(shù)一:”;c1.print();cout<<“復(fù)數(shù)二:”;c2.print();cout<<“相加后:”;c3.print();}

結(jié)果:

實(shí)驗(yàn)三:

7-5 定義一個(gè)基類Shape,在此基礎(chǔ)上派生出一個(gè)Rectangle和Circle,二者都有g(shù)etArea()函數(shù)計(jì)算對(duì)象的面積。使用Rectangle類創(chuàng)建一個(gè)派生類Square.#include using namespace std;#define PI 3.1415926 class Shape {

public: Shape(){}

double GetArea()

{

return 0.1;}

};class Rectangle: public Shape {

public:

Rectangle(double w,double h)

{

width=w;height=h;}

double GetArea(){

return width*height;}

private: double width,height;};class Circle:public Shape { private: double r;

public: Circle(double rr){ r=rr;}

double GetArea(){

return PI*r*r;} };

int main(){

Rectangle * rec=new Rectangle(5,6);

Circle * cir=new Circle(5);

cout<<“RecArea:”<GetArea()<

cout<<“CirArea:”<GetArea()<

return 1;

} 運(yùn)行結(jié)果:

7-10.定義一個(gè)Object類,有數(shù)據(jù)成員weight及相應(yīng)的操作函數(shù),由此派生出Box類,增加數(shù)據(jù)成員height和width及相應(yīng)的操作函數(shù),聲明一個(gè)Box對(duì)象,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。#include class object { private: int Weight;public:

object(){ cout<<“構(gòu)造object對(duì)象”<

class box:public object

{ private: int Height,Width;public: box(){

cout<<“構(gòu)造box對(duì)象”<

第五篇:C++課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告(范文)

C++課程設(shè)計(jì)報(bào)告

設(shè)計(jì)題目:

學(xué)

院: 專業(yè)班級(jí): 學(xué)生姓名: 學(xué)生學(xué)號(hào): 指導(dǎo)教師:

計(jì)算機(jī)技術(shù)與科學(xué)

3班 樊冠男 40912140 馬軍亮

提交時(shí)間:

2011/1/12 成績:

目錄

C++課程設(shè)計(jì)報(bào)告

第一章 引言

C++課程設(shè)計(jì)報(bào)告

第二章 概要設(shè)計(jì)

C++課程設(shè)計(jì)報(bào)告

第三章 軟件實(shí)現(xiàn)

C++課程設(shè)計(jì)報(bào)告

第四章 結(jié)果與討論

下載C++俄羅斯方塊實(shí)驗(yàn)報(bào)告(附實(shí)驗(yàn)體會(huì))[合集五篇]word格式文檔
下載C++俄羅斯方塊實(shí)驗(yàn)報(bào)告(附實(shí)驗(yàn)體會(huì))[合集五篇].doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    C++上機(jī)實(shí)驗(yàn)報(bào)告

    第二次上機(jī)實(shí)驗(yàn)報(bào)告 姓名:王小寧班級(jí):學(xué)號(hào): 031012 1234 第一題: 題目: 編寫一個(gè)類,聲明一個(gè)數(shù)據(jù)成員和一個(gè)靜態(tài)數(shù)據(jù)成員,其構(gòu)造函數(shù)初始化數(shù)據(jù)成員,并把靜態(tài)數(shù)據(jù)成員加1,其析......

    C++上機(jī)實(shí)驗(yàn)報(bào)告

    C++上機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱:實(shí)驗(yàn) 專業(yè)班級(jí): 姓名: 學(xué)號(hào): 實(shí)驗(yàn)日期: 10 11 實(shí)驗(yàn) 目錄 1. 實(shí)驗(yàn)?zāi)康? 2. 實(shí)驗(yàn)內(nèi)容 3. 程序代碼 4. 調(diào)試結(jié)果 5. 實(shí)驗(yàn)心得 1. 實(shí)驗(yàn)?zāi)康?實(shí)驗(yàn)10 (1......

    c++實(shí)驗(yàn)(網(wǎng)絡(luò)工程 ))

    面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn) Object Oriented Programming 課程編號(hào): 學(xué) 分: 學(xué) 時(shí):10 先修課程:計(jì)算機(jī)導(dǎo)論、C語言程序設(shè)計(jì) 適用專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程 教 材:《C++程序設(shè)計(jì)......

    C++實(shí)驗(yàn)總結(jié)報(bào)告

    C++ 實(shí)驗(yàn)總結(jié)報(bào)告 研究課題:圖形編輯器一、實(shí)驗(yàn)?zāi)康?1. 熟悉C++的一些重要性質(zhì),利用封裝、繼承、虛函數(shù)和多態(tài)性等特性,通過實(shí)驗(yàn)學(xué)習(xí)如何對(duì)各類圖元的屬性和方法進(jìn)行合理的封裝......

    C++上機(jī)實(shí)驗(yàn)報(bào)告5(定稿)

    C++程序?qū)嶒?yàn)報(bào)告 實(shí)驗(yàn)五繼承與派生 實(shí)驗(yàn)?zāi)康?1.學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類 2.熟悉不同繼承方式下對(duì)基類成員的訪問控制 3.學(xué)習(xí)利用虛基類解決二義性問題 實(shí)驗(yàn)要......

    《C++程序設(shè)計(jì)》實(shí)驗(yàn)報(bào)告范例

    注意:以下藍(lán)色文字部分根據(jù)情況增刪實(shí)驗(yàn)1熟悉VC++6.0集成開發(fā)環(huán)境 一、實(shí)驗(yàn)時(shí)間: 2011年9月20日 二、實(shí)驗(yàn)地點(diǎn): 第7機(jī)房 三、指導(dǎo)教師: 鄧譜 四、實(shí)驗(yàn)?zāi)康模?1. 了解VC++6.0的主要......

    C++小區(qū)停車位管理實(shí)驗(yàn)報(bào)告

    南昌大學(xué)實(shí)驗(yàn)報(bào)告 學(xué)生姓名: 學(xué)號(hào):610 專業(yè)班級(jí):自動(dòng)化班實(shí)驗(yàn)類型:□ 驗(yàn)證 □ 綜合■ 設(shè)計(jì) □ 創(chuàng)新 實(shí)驗(yàn)日期:實(shí)驗(yàn)成績:小區(qū)停車位管理 1.實(shí)驗(yàn)要求 建立一個(gè)停車場(chǎng)模擬的收費(fèi)管理......

    西南交大c++實(shí)驗(yàn)報(bào)告11

    實(shí)驗(yàn) 11實(shí)驗(yàn)報(bào)告 教學(xué)班級(jí):_26_學(xué)生學(xué)號(hào):_2015_學(xué)生姓名:__ 實(shí)驗(yàn)日期:___2016.6.3____實(shí)驗(yàn)地點(diǎn):__7307__(機(jī)房) 指導(dǎo)教師簽名:_____________ 實(shí)驗(yàn)成績:______________ 一、實(shí)驗(yàn)?zāi)?.....

主站蜘蛛池模板: 亚洲人成77777在线播放网站不卡| 国产人妻777人伦精品hd| 妺妺窝人体色www看人体| 欲求不満の人妻松下纱荣子| 一区二区狠狠色丁香久久婷婷| 亚洲精品av无码喷奶水网站| 亚洲高清国产拍精品熟女| 日本成本人片免费网站| 精品国产无套在线观看| 美女啪啪网站又黄又免费| 人妻丰满熟av无码区hd| 玩弄放荡人妻少妇系列视频| 国产欧美日韩中文久久| 欧美成人精精品一区二区三区| 成人免费无码大片a毛片18| 成·人免费午夜无码视频蜜芽| 欧洲美洲精品一区二区三区| 2020最新国产自产精品| 2020国产精品精品国产| 日韩欧美卡一卡二卡新区| 色偷偷中文字幕综合久久| 国产麻豆精品乱码一区| 夜爽8888视频在线观看| 麻豆最新国产av原创精品| 久久亚洲精品成人无码| 色婷婷亚洲一区二区综合| 国产乱了真实在线观看| 久久婷婷丁香五月综合五| 精品无码国产自产在线观看水浒传| 国产成人精品综合在线观看| 高清无码爆乳潮喷在线观看| 海角社区在线视频播放观看| 一区二区狠狠色丁香久久婷婷| 欧美激情一区二区三区在线| 欧美日韩综合精品一区二区| 色婷婷国产精品高潮呻吟av久久| 久久人人97超碰国产亚洲人| 色情一区二区三区免费看| 亚洲综合无码无在线观看| 天天做天天爱天天综合网2021| 欧美成人www免费全部网站|