数据结构(c++版)实验参考书

2024-11-07

数据结构(c++版)实验参考书(共4篇)

1.信息系C++实验报告(实验8) 篇一

实验学时 2 实验时间 2017 年 12 月 1 日

实验地点

指导教师

课程名称 C++程序设计 专

业班

成绩

实验项目 类和对象(构造函数、析构函数、组合类、友元)

实 验 目 的 1、理解类的概念;2、掌握声明类的方法; 3、掌握对象的定义和初始化 4、掌握通过类编写程序 5、构造函数、析构函数 6、对象数组、对象引用、对象指针 7、组合类 8、静态成员 9、友元 实 验 内 容 和 要 求 1、阅读“程序 1.txt”,然后回答以下问题:

1)行 A 定义了一个类 Test 的对象,它将调用哪个构造函数?

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

为什么不可以或者可以?

3)行 B 定义了另一个对象,它将调用哪个构造函数?

4)解释第二个构造函数的函数体中用到 this 指针的原因:?

5)解释行 C 数组 p 的含义?

2、阅读“程序 2.txt”,然后回答以下问题:

1)行 A 中动态申请的数组为何还要将数组大小加 1?

2)String 类中是否还存在默认的构造函数“String();“?

3)行 B 开始的构造函数称之为

构造函数。解释其功能

4)执行行 C 时会调用哪个构造函数?

5)上机验证该程序。

3、阅读“程序 3.txt”,然后回答以下问题:

1)执行行 A 后,a1.c=

a2.c=

A::c=

2)执行行 B 后,a1.c=

a2.c=

A::c=

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

为什么

4)c 为类 A 的私有成员,但行 D 中为何通过 t 能直接访问成员 c?

5)执行行 E 后,a1.c=

a2.c=

A::c=

第 1 题、第 2 题和第 3 题不用抄题目,只需写答案在报告纸上。

4、定义一个点类 Point,包括数据成员点的 x 坐标和 y 坐标(int)、构造函数以及设置点 x,y 坐标的成员函数。定义一个 CRect 类,代表一个矩形,要求

CRect 类中有代表矩形的左上角坐标(x1,y1)和右下角坐标(x2,y2)点类的对象(组合类),要求 CRect 类中有三个成员函数 RectHeight()、RectWidth()以及area(),通过这三个函数能得到矩形的高和宽和面积。

要求 CRect 类中有构造函数,要求 CRect 类中有成员函数 SetR(),通过这函数能设置矩形的左上角坐标和右下角坐标。

5、建立一个类 primenum,求指定数据范围内的所有质数。具体要求如下:

1)私有数据成员 int data[25]

依次存放指定范围内求出的所有质数 int low,high

存放指定的数据范围的下限和上限 int num

存放 low 与 high 之间的质数的个数

2)公有成员函数 primenum(int low,int high)

构造函数,初始化 low 和 high,同时在函数体内初始化 num 为 0 int isprime(int x)

判断 x 是否为质数。若是质数,返回 1;否则,返回 0.void process()

求指定范围内的所有质数,把它们依次存放在数组 data,并将求出的质数个数存放在 num 中 void print()

输出求出的质数个数以及所有质数,要求每行输出 5 个质数。

3)在主函数中对该类进行测试。例如:定义一个 primenum 类的对象 test,指定查找范围为 100~200,求出 100~200 之间的所有质数。

实 验 过 程(算法、源代码以及注释)

实 验 结 果(记录程序执行的结果,分析结果)

2.数据结构(c++版)实验参考书 篇二

设计文档

惠州学院

HUIZHOU UNIVERSITY

课程名称: 程序设计综合实验

姓名:实验名称: 俄罗斯方块 学号:任课教师:

专业:班级: 计算机科学与技术1班

实验时间:

计算机科学与技术

综合实验项目:俄罗斯方块游戏

1、问题需求

(1)游戏等级:游戏分为1-10十个等级,等级越高,方块下落速度越快;(2)由方向键控制游戏:上键控制方块变形、下键控制方块下移并判断是否有消行、左键控制方块左移、右键控制方块右移;

(3)游戏积分:一次性消的行数越多加的分数越多,当消行每超过30行自动提高一个游戏等级。

2、总体设计:

(1)用数组存放方块(2)输出地图

(3)在地图里面输出方块(4)开始游戏(5)方块的旋转(6)方块是否能下落(7)判断方块是否能下落(8)提示下一个即将下落的方块(9)控制方块的下落速度

(10)分成10等级,等级越高方块下落得更快(11)消行处理(12)游戏结束

3、详细设计设计说明:本程序运行代码如下:

#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);

//转动 int * create();

//创建方块 void init();

//初始化工作

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

//清除键盘缓冲区 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();

//预创建方块 int q=0;int sign,blank,x,y;while(1){

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

//复制方块

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;

//标记,使跳出 while(sign)循环,产生新方块 if(y<=1)gameover();

//是否结束 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,“分数”);textout(handle,26+dx,7+dy,wColors,1,“等级”);textout(handle,26+dx,11+dy,wColors,1,“下一个方块提示”);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,“赵强”);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,”游戏结束“);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、程序运行结果截图: cout<<“error:WriteConsoleOutputAttribute”<

方块左移

方块右移

下一个方块开始下落

方块变形

消一行,增加1分

成功消多行

消多行后分数增加更多

消完30行后,提升一个等级

方块叠到顶端后游戏结束

5、程序使用说明:

(1)按任意键开始游戏

(2)控制方块下落位置进行消行处理

(3)成功消行后加分,当消30行之后等级升一级,最高达到10等级

(4)当产生的新方块不能再下落时,游戏结束。(5)过程中可以按ESC直接退出游戏

6、本实验的心得体会

3.数据结构(c++版)实验参考书 篇三

2、将该文件拷贝到工程文件夹下,在终端执行:

#make create(将会在根目录下创建出include, src, bin 三个目录)

#make 即可编译

#make clean删除所有生成的中间文件和可执行文件

3、如果需要编译C++的.cpp和C语言的.c文件,即C、C++混合编译,将CC=gcc 改为CC=g++即可。(如果还不行,那就需要在.cpp文件的extern “C”中将被调用的.c声明一下,或者将所有.c文件做成成静态库,后者适合.c文件较多的情况)

CC=gcc

CFLAGS=-o

PARAM=-Wall

CUR=$(shell pwd)

SRC=$(CUR)/src

SRCS=$(SRC)/*.c

TARGET=$(CUR)/bin/exe

.PHONY:$(TARGET)

all:$(TARGET)

$(TARGET):$(SRCS)

$(CC)$^ $(CFLAGS)$@ $(PARAM)

clean:

@-rm-rf $(TARGET)

@-rm-rf $(CUR)/include/*~

@-rm-rf $(SRC)/*~

@-rm-rf $(CUR)/*~

create:

@-mkdir src/

@-mkdir include/

4.数据结构(c++版)实验参考书 篇四

二 实验目的:熟悉SQL SERVER2008 环境,熟悉查询分析器的使用,能够熟练运用sql命令完成数据库,基本表、主码、外码和其它必要的约束条件的定义。

三 实验内容及要求:(从下面10个题目中选择一个)题目一: 利用sql建立学生信息数据库,并定义以下基本表: 学生(学号,年龄,性别,系号)课程(课号,课名,学分,学时)选课(学号,课号,成绩)

定义主码、外码、和年龄、学分、学分的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目二: 利用sql建立图书管理数据库,并定义以下基本表: 图书(书号,书名,价格,出版社)读者(卡号,姓名,年龄,所属单位)借阅(书号,卡号,借阅日期)

定义主码、外码、和年龄、价格的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目三: 利用sql建立商品信息数据库,并定义以下基本表: 商品(编号,品名,进价,库存,售价,厂商编号)顾客(卡号,姓名,电话,积分)

厂商(编号,厂址,名称、电话、经理)销售(卡号,商品编号,数量,日期)

定义主码、外码、和价格、积分的取值范围。在表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目四: 利用sql建立图书信息数据库,并定义以下基本表: 图书(书号,书名,作者编号,价格,出版社编号)作者(编号,姓名,电话)

出版社(编号,出版社名称,地址)定义主码、外码、和价格的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目五: 利用sql建立零件信息数据库,并定义以下基本表: 零件(编号,名称,颜色,生产车间号)车间(编号,名称,人数,主任)产品(编号,名称,车间编号)

使用(产品编号,使用零件编号,个数)

定义主码、外码、和人数、个数的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目六: 利用sql建立药品信息数据库,并定义以下基本表: 药品(编号,名称,价格,厂商编号)处方(药品号,数量,医生编号)医生(编号,姓名,科室,职称)

定义主码、外码、和数量、价格的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目七: 利用sql建立教材数据库,并定义以下基本表: 学生(学号,年龄,性别,系名)教材(编号,书名,出版社编号,价格)订购(学号,书号,数量)出版社(编号,名称,地址)

定义主码、外码、和价格、数量的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目八: 利用sql建立雇员信息数据库,并定义以下基本表: 员工(编号,姓名,性别,年龄,部门编号,年薪)部门(编号,名称,人数,负责人)项目(编号,名称,负责部门)

定义主码、外码、和年龄、学分、学分的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目九: 利用sql建立帐户信息数据库,并定义以下基本表: 帐户(编号,姓名,余额,建立日期,储蓄所编号)储蓄所(编号,名称,地址,人数,所属城市)借贷(帐户,借贷类型,金额,日期)

定义主码、外码、和人数、余额的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

题目十: 利用sql建立仓库信息数据库,并定义以下基本表: 仓库(编号,保管员编号,面积)

保管员(编号,姓名,年龄,电话、月薪)商品(编号,品名,仓库编号、数量,单价)定义主码、外码、和年龄、面积的取值范围。在三个表中输入若干记录,注意如果输入违反完整性约束条件的记录系统有何反应。

上一篇:优秀作文:温暖的蜡烛下一篇:6年级下册信息教案