C++实验讲义1.docx

上传人:b****2 文档编号:2260917 上传时间:2023-05-03 格式:DOCX 页数:9 大小:18.19KB
下载 相关 举报
C++实验讲义1.docx_第1页
第1页 / 共9页
C++实验讲义1.docx_第2页
第2页 / 共9页
C++实验讲义1.docx_第3页
第3页 / 共9页
C++实验讲义1.docx_第4页
第4页 / 共9页
C++实验讲义1.docx_第5页
第5页 / 共9页
C++实验讲义1.docx_第6页
第6页 / 共9页
C++实验讲义1.docx_第7页
第7页 / 共9页
C++实验讲义1.docx_第8页
第8页 / 共9页
C++实验讲义1.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++实验讲义1.docx

《C++实验讲义1.docx》由会员分享,可在线阅读,更多相关《C++实验讲义1.docx(9页珍藏版)》请在冰点文库上搜索。

C++实验讲义1.docx

C++实验讲义1

 

C++程序设计实验讲义

 

河北大学电子信息工程学院

2007年1月31日

目录

实验1在小范围内用C++增强C的功能2

实验2类的定义与应用4

实验3this指针、静态数据成员和友元函数的使用5

实验4运算符重载8

实验5派生与继承10

 

实验1在小范围内用C++增强C的功能

1.实验目的和要求

目的:

快速掌握C++语言编程的方法,在小范围内增强C++的功能,主要内容有:

(1)输入流、输出流的使用;

(2)函数原型;(3)new和delete运算符分配内存。

2.实验内容:

(1)编写一个用输入和输出流运算符进行的输入和输出的程序。

从键盘输入两个数,分别对两个数进行加,减,乘和除的运算。

并输出计算结果,如:

23+123=146。

(2)用new和delete运算符动态分配内存空间的方法编写程序。

从键盘输入33整型数组的数据,并计算出所有元素之和,打印出最大值和最小值。

输入输出要用流运算符实现。

(3)编写C++风格的程序,解决百钱问题:

将1元人民币兑换成1,2,5分的人民币,有多少种换法?

(4)在主函数中定义包含10个元素的一维数组,并赋值为9,8,7,6,5,4,3,2,1,0。

用引用作函数参数的方法,在函数中实现将数据逆序存放,并在主函数中打印出来。

(5)假设我们班有50名同学,每个同学都报出自己的生日,每个同学的生日都不相重的概率只有0.096,如果有100个同学,不相重的概率为3.072510-7。

相重复的概率如此之大与我们主观想象不同。

写一个程序,输入同学的人数n计算出其生日不重复的概率。

然后在用彷真的方法,利用随机数产生每个同学的生日,计算出生日不重复的概率并与前面的结果进行比较。

[学生的生日可以用随机数产生,rand()产生0—32767之间的伪随机数,因为此需要一个种子,种子不同产生的随机数列不同,rand()产生的随机数也不同,可以调用srand(longint*)函数设置种子,比如我们可以获得计算机中的时间获得随机数种子,以上函数需要包含头文件stdlib.h]

3.思考题:

结合上机的体会,回答下列问题.

(1)C++引入了I/O流运算符,与C语言相比,它们好处是什么?

(2)与C语言的动态分配内存函数相比,C++的new和delete运算符的优点是什么?

(3)引用是C++的很重要的功能,在函数定义中,如何使用引用,会实现怎样的效果?

实验2类的定义与应用

1、实验目的和要求:

掌握类定义的方法,理解类类型,实例的含义,体会面向对象程序设计中数据隐藏的概念。

2、实验内容:

(1)定义一个时间类Time,它能提供由时分秒组成的时间。

要求能够修改时间和打印出时间。

(2)编写一个计数器类,定义一个私有数据成员,通过两个成员函数,分别使其完成加1和减1操作。

用构造函数数据成员初始化为0,输出函数可以输出数据成员函数的值。

(3)定义一个类包含一个整型数的指针变量,在构造函数中用new分配10各整型数的内存空间,在析构函数中用delete释放内存空间,并编写给内存空间赋值和输出函数。

3、思考题:

结合编程实践回答下列的问题。

(1)结合第一个例子,说明什么是类?

什么是对象?

你是如何理解类和对象的?

(2)面向对象的程序设计与结构化程序设计有何不同?

实验3this指针、静态数据成员和友元函数的使用

1、实验目的和要求:

(1)掌握显式使用this指针的方法

(2)掌握静态数据成员的意义及使用方法

(3)掌握友元函数的使用方法

2、实验内容:

(1)有如下类的定义。

类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。

(有两种方法即不用this指针和用this指针)

#include

classMyclass

{public:

Myclass(inta,intb){x=a;y=b;}

Voidcopy(Myclass&my);

voidprint()

{cout<<“x=”<

cout<<”y=”<

}

private:

intx,y;

};

voidmain()

{Myclassmy(10,20),t(30,40);

my.print();

my.Copy(t);

my.print();

}

(2)商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,单价不一样,因此商店需要记录下目前库存的货物的总重量和总价值。

编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。

(本题目主要练习静态数据成员的使用,定义私有变量存每件货物的价格和重量,用静态数据成员存货物的总重量和总价钱,定义构造函数和析构函数,当定义新的对象完成初始化的功能和删除对象时,从总重量和总价钱中减去对象的重量和价格)

(3)个类分别为整型数集合类和实型数集合数类。

将缺少的内容补齐。

并完成要求的其它内容。

如:

classIntset

{private:

intnum[3];

public:

Intset(intx,inty,intz)

{//添加初始化内容}

voidprint()

{//打印数据}

};

classfloatset

{private:

floatnum[3];

public:

floatset(floatx,floaty,floatz)

{

//添加初始化内容

}

voidprint()

{//打印数据

}

};

(1)在Intset中再增加一个成员函数,将对象的整型数据拷贝的到floatset的对象中此成员函数的原型为:

voidsettofloat(floatset&set);//形参为拷贝的目标对象

(2)办法需要调用函数,程序的开销较大,可以定义一个友元函数来实现上述的功能。

请分别完成两个程序。

3、思考题:

结合编程实践回答下列的问题。

(1)什么是this指针,它的主要作用是什么?

(2)总结静态成员的特点。

实验4运算符重载

1、实验目的和要求:

掌握运算符重载的语法要点,学会运算符重载的编程方法。

2、实验内容

(1)先读程序,预测程序的输出结果,再运行程序验证程序的输出。

用友元重载方式重新编写次程序。

#include

classVector

{public:

Vector(){}

Vector(inti,intj){x=i;y=j;}

friendVectoroperator+=(Vectorv1,Vectorv2)

{v1.x+=v2.x;

v1.y+=v2.y;

returnv1;

}

Vectoroperator-=(Vectorv)

{Vectortemp;

temp.x=x-v.x;

temp.y=y-v.y;

returntemp;

}

voiddisplay()

{cout<<"("<

private:

intx,y;

};

voidmain()

{

Vectorv1(1,2),v2(3,4),v3,v4;

v3=v1+=v2;

v4=v1-=v2;

cout<<"v1=";

v1.display();

cout<<"v2=";

v2.display();

cout<<"v3=";

v3.display();

cout<<"v4=";

v4.display();

}

(2)定义一个有理数类,重载比较运算符.写一个完整的程序,进行数据成员的设置和输出。

classrational

{private:

longdenom,den;

//denom为分子,den为分母

public:

rational(intnum=0,intdenom=1;

intoperator<(rationalr)const;

intoperator<=(rationalr)const;

intoperator==(rationalr)const;

intoperator!

=(rationalr)const;

//这里增加赋值和读出函数

}

(3)设计一个复数类,并重载+,-,×,/和<<运算符。

写完整程序并调试。

实验5派生与继承

1、实验目的和要求:

此实验用两个单元的时间完成,是一个综合性的实验,要求编写的程序涉及到C++的许多知识点,如类的定义,动态分配内存,构造函数,派生,虚基类等。

实验内容给出的是一个完整的程序,4个题目实际是类等级。

同学也可以在此基础上发挥增加新的内容。

2、实验内容:

1.定义一个基类MyArray,基类中可以存放一组数组。

ClassMyarray

{int*alist;

intlength;

public:

Myarray(intleng);

~myarray();

voidinput();

voiddisplay();

};

编写构造函数,析构函数及其它函数,实现动态分配内存,释放内存和数据输入输出等功能。

并进行调试。

2.定义一个类averarray继承自myarray,在类中求数组的平均值,并输出。

进行调试。

3.定义一个类revarray继承自myarray,使数组按反序存放,并输出。

进行调试。

4.定义一个类Nawarray继承自averarray和revarray。

在继承过程中声明为虚基类,体会虚基类在解决二义性中的问题中的作用。

调试中可以试一试不用虚基类出现的问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2