合肥工业大学程序设计基础试验报告_第1页
合肥工业大学程序设计基础试验报告_第2页
合肥工业大学程序设计基础试验报告_第3页
合肥工业大学程序设计基础试验报告_第4页
合肥工业大学程序设计基础试验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——合肥工业大学程序设计基础试验报告

程序设计基础试验报告姓名:班级:学号:计算机科学与技术合肥工业大学计算机与信息学院1

试验七类与对象

1.试验目的要求

(1)把握类的定义和实现。

(2)把握对象创立及使用的基本方法。

2.试验设备

硬件环境:微型计算机软件环境:

操作系统:Windows语言环境:VisualC++

3.预习要求

学习教材有关类的定义与实现、对象创立与应用等有关内容,对试验基本要求应在上机试验前细心阅读,程序应事先编制完成,上机时录入调试,同时还应设计相应的测试用例集,检查程序的正确性、可靠性、完备性和容错能力。

4.试验内容

(1)下面程序定义了一个以hours,minutes和seconds作为数据成员的Time类。设计了成员函数将两个Time对象相加(即时间相加),并进行相应的检查,查看增加的分钟数及秒数是否大于59。假使秒数大于59,则分钟数向前递增1。类似地,假使分钟数大于59,则小时数向前增1。

#includeusingnamespacestd;classTime{

private:

inthours,minutes,seconds;voidget_time(){

2

public:

};

cin>>hours>>minutes>>seconds;}

voiddisplay_time(){

cout=60){

seconds-=60;minutes++;}

if(minutes>=60){

minutes-=60;hours++;}}

voidmain(){}

Timeone,two,three;

coutusingnamespacestd;classTime{

private:

inthours,minutes,seconds;public:

Time(inth=0,intm=0,ints=0):hours(h),minutes(m),seconds(s){}

voiddisplay_time(){

cout=60){

seconds-=60;minutes++;}

while(minutes>=60){

minutes-=60;hours++;}}

voidmain(){}

Timeone(2,34,45),two(1,47,56),three;three.add_time(one,two);three.display_time();

(2)阅读下面的一段程序代码,代码可能有错误,请细心分析并体会。

classDate{public:

voidDate(){};

intDate(intyear,intmonth,intday);void~Date(){};

int}int}int}private:

intyear=2000;intmonth=12;intday=31;

staticboolIsLeapyear;//是否闰年};

boolDate::IsLeapyear=true;

intDate::Date(intyear,intmonth,intday)

5

next;deletetmp;}}

boollist::insert(intval)//定义list类中插入元素的成员函数{

element*elem=newelement;//为新元素分派存储if(elem!=0){

elem->val=val;//将新元素插入到链表头elem->next=elems;elems=elem;returntrue;}

elsereturnfalse;}

boollist::deletes(intval)//定义list类中删除元素的成员函数{

if(elems==0)returnfalse;//若表为空,返回falseelement*tmp=elems;if(elems->val==val)

{//若待删除的元素为表头元素elems=elems->next;deletetmp;

20

insert(30);ptr->insert(40);ptr->insert(543);ptr->insert(40);ptr->print();ptr=ptr->insert(23);ptr->insert(672);ptr->insert(456);ptr->insert(23);ptr->print();getch();return1;}

[基本要求]

?阅读程序,根据题意要求在处填上适合的内容完成程序。

?上机录入、调试上面程序。

?运行程序,设计测试数据,观测运行结果是否正确且满足题意要求。[分析与思考]

?在list类中设计并实现一个从链表头取一个节点(取出后该结点删除,下一个结点作为头结点)并返回节点值(整数值)的成员函数。

?在集合类中增加求集合并、交、差的成员函数。

填完后源码如下:

#includenext;deletetmp;}}

boollist::insert(intval){

element*elem=newelement;if(elem!=0){

elem->val=val;elem->next=elems;elems=elem;returntrue;}

elsereturnfalse;}

boollist::deletes(intval){

if(elems==0)returnfalse;element*tmp=elems;

23

if(elems->val==val){elems=elems->next;deletetmp;returntrue;}else

for(element*elem=elems;elem->next!=0;elem=elem->next)if(elem->next->val==val){tmp=elem->next;elem->next=tmp->next;deletetmp;returntrue;}

returnfalse;}

boollist::contain(intval){if(elems==0)returnfalse;

if(elems->val==val)returntrue;else

for(element*elem=elems;elem->next!=0;elem=elem->next)if(elem->next->val==val)returntrue;returnfalse;}

voidlist::print(){

if(elems==0)return;

for(element*elem=elems;elem!=0;elem=elem->next)coutinsert(30);ptr->insert(40);ptr->insert(543);ptr->insert(40);ptr->print();ptr=ptr->insert(23);ptr->insert(672);ptr->insert(456);ptr->insert(23);ptr->print();getch();return1;}

输出结果为:

符合要求

25

试验十运算符重载

1.试验目的

(1)把握运算符重载的定义及实现。(2)把握具有运算符重载的应用。

2.试验设备

硬件环境:微型计算机软件环境:

操作系统:Windows语言环境:VisualC++

3.预习要求

学习教材有关运算符重载的内容,对基本运算符重载及特别运算符重载有充分的理解。对试验基本要求应在上机试验前细心阅读,程序应事先编制完成,上机时录入调试,同时还应设计相应的测试用例集,检查程序的正确性、可靠性、完备性和容错能力。

4.试验内容

(1)将一个16位二进制数表示成0和1的字符序列,即用一个字符数组来存放这个二进制数。在这个类中设置两个构造函数,一个是传递整数参数的,另一个是传递字符串参数的。由于用户在创立对象时传递的二进制数,可能是以整数形式给出,也可能是以数字串形式给出,系统应当都能接受。另外有一个类型转换函数int(),用来将类类型向整型转换。程序中的两个重载运算符“+〞,“-〞,用来完成两个二进制数之间的加减运算。

#include\

#include\#include\

classbinary{//定义二进制类

charbits[16];//二进制字模数组public:

binary(char*);//字符串参数构造函数binary(int);//整型参数构造函数

friendbinaryoperator+(binary,binary);//重载“+〞friendbinaryoperator-(binary,binary);//重载“-〞operatorint();//类类型转换函数voidprint();};

26

binary::binary(char*num){

intisrc=strlen(num)-1;//字符串长度-1为最低位intidest=15;

while(isrc>=0//逐位赋值while(idest>=0)bits[idest--]='0';//空高位值0}

binary::binary(intnum){

for(inti=15;i>=0;i--)

{bits[i]=(num%2==0?'0':'1;)//求余数num>>=1;//移位,相当于整除2}}

binaryoperator+(binaryn1,binaryn2){

unsignedcarry=0;unsignedvalue;binaryres=\

for(inti=15;i>=0;i--){

value=(n1.bits[i]=='0'?0:1)+(n2.bits[i]=='0'?0:1)+carry;res.bits[i]=(value%2==0?'0':'1');carry=value>>1;}

returnres;}

binaryoperator-(binaryn1,binaryn2){

unsignedborrow=0;intvalue;

binaryres=\

for(inti=15;i>=0;i--){

value=(n1.bits[i]=='0'?0:1)-(n2.bits[i]=='0'?0:1)+borrow;res.bits[i]=(value==-1||value==1?'1':'0');

borrow=(value==-1||borrow!=0}

returnres;}

27

binary::operatorint(){

unsignedvalue=0;

for(inti=0;i=0

29

while(idest>=0)bits[idest--]='0';}

binary::binary(intnum){

for(inti=15;i>=0;i--)

{bits[i]=(num%2==0?'0':'1');

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论