VC++实验

VC++实验名称

实验一

 

实验目的:

1.了解并掌握VC编程环境的使用.

2.通过具体的编程掌握运算符的优先级和结合规律.

3.函数的定义和库函数的使用.

 

实验导读:

1.VC编程环境的使用,请参考"VC"

2.标识符的构成:数字,字母和下划线,数字不可作为开头.

3.了解运算符五个的要点,即:

a.运算功能;

b.运算对象的限制;

c.运算优先规则;

d.结合规律;

e.运算值的类型.

4.运算符主要有:算术运算符,关系运算符,逻辑运算符,复合赋值运算符,要掌握这些运算符的结合规律和优先级.

5.各种变量的声明形式.

 

实验内容:

1. 考查下列独立存在语句的正确性,并利用VC环境进行验证 设 a=2,b=2,c=2;A:a=-b+++c;B:a+=b-=c/=a-3;

 

2.利用VC环境找出下列程序中的错误,该程序的输出,结果是什么?

#include"iostream.h"

void main()

{ int x,y,z;

cout << "This is a test" << endl;

x=y=1;

if(x=y) count << "x=y";

else cout << "x=!y" << endl;

z=10;};

 

参考答案:

#include

main()

{

int a=2,b=2,c=2;

a=-b+++c;

cout<<"a=-b+++c a="

<

a=2,b=2,c=2;

a+=b-=c/=a-3;

cout<<"a+=b-=c/=a-3 a="

< int x,y,z;

cout<<"This is a test"

<<(x=y=1); //"This is a test"后的<改为<< //赋值运算符=优先级低于<<,应用圆括号括起

if( x==y ) cout<<"x=y/n";

//if(xcount<<"x=y<;

else cout<<"x!=y/n"<<(z=10);

//else ; cout<"x!=y'

/*程序执行结果

a=-b+++c a=0 b=3 c=2

a+=b-=c/=a-3 a=6 b=4 c=-2

 

This is a test1x=y

*/

 

实验二

 

实验目的:

1、掌握类的定义,包括:构造函数、析构函数、成员函数和数据成员。

2、了解并掌握对象成员的访问机制。

3、掌握在VC开发环境中的程序编译,执行。

 

实验导读:

1、类由三部分组成:公有、保护和私有,分别由关键字public、protected和private声明。在这些关键字后面要加冒号“:”。

2、类中的构造函数与类同名,没有返回值,它起到对类进行初始化的作用。

3、一个类的对象可以成为另一个类的成员,即对象成员,这样可以利用简单的类构成复杂的类。

4、对类定义中的常量、引用和对象成员可用初始化表来进行初始化。在具体的执行过程中,对象成员的构造函数首先被执行。

5、在创建对象时,可用拷贝构造函数进行初始化。如,student s1(s2);意味着创建一新的对象s1,且s1=s2。

6、类的私有成员只能由类本身和友元访问。类的保护成员可由类本身、派生类及友元访问。类的公共成员可由外部任意访问。

7、this指针是指向对象自己本身的指针。

 

实验内容:

1、在类time中加入成员函数settime(int h,int m,int s)用来对时间进行修改,并同时验证三整数h,m,s的有效性。

2、在类time中,修改函数print(),使时、分、秒的显示格式为二位,如,23:14:21代表23时14分21秒,01:14:05代表1时14分5秒。

 

 

实验三

 

实验目的:

1. 掌握友员的定义和使用。

2. 掌握派生类的定义和使用,虚基类的定义和使用。

 

实验导读:

有关友员类、友员成员函数和友员函数:

1. 友员有三种形式:友员类、友员成员函数和友员函数。

 

2. 友员可以访问并修改类的私有或保护数据,调用类的私有或保护成员函数,使类既具有封装性,又具有灵活性。

 

3. 友员关系不能传递,不是互逆的。 

有关类的派生

1. 基类和派生类体现了类之间的层次关系。派生类具有基类的所有成员。

 

2. 有三种派生类型:公有、保护和私有。对基类成员的访问有一定的规则。

 

3. 派生类的构造函数自动执行基类的构造函数,且基类的构造函数先执行。基类构造函数的参数由派生类传递。

 

4. 继承类具有基类的所有成员,并可对已有的成员进行重新定义。在派生类中访问基类的函数用::表明。

 

5 可定义多重派生类。且可利用虚基类使派生类只保持一个基类的成员拷贝。 

 

实验内容:

1. 有类data-_rec和类student如下

 

#include

#include

class data_rec

{

public:

data_rec( ) { name=null; }

void insert_name( char *na)

{ delete [] name;

name=new char[strlen(na)+1];

strcpy(name, na); }

void print ( )

{ cout << "/n name:" << name; }

private:

char *name; };

 

//定义派生类 student

class student::virtual public data_rec

{ public:

student( ):data_rec( ) { id=0; } //构造函数

void insert_id(int pid) { id=pid;}

void print ( )

{

data_rec::print( ); //访问基类的函数

cout << "/n id=" << id;

}

 

请在data_rec类下定义派生类worker, 有私有数据“工资”,再定义worker 和student的多派生类“在职学生”wstudent,它们都有一个缺省构造函数和print( )函数,

请用虚基类消除数据冗余。

 

2. 调试下列程序,找出错误,并请用友员函数方法解决程序中的问题。

 

#include

class count

{

public:

count( ) { x=0; }

void print ( ) { cout << x << endl; }

priavte:

int x;

};

 

void setX( count &c, int val)

{

c.x=val;

}

 

void main( )

{

count obj;

obj.print( );

setX(obj, 9);

obj.print( );

return 0;

}

 

实验四

 

实验目的:

掌握虚函数的定义及应用,了解多态性的实现机制.

 

实验导读:

1. 基类中的虚函数是由virtual定义的: virtual void print( );

2. 在定义了虚函数之后, 其多态性在派生类中得到延伸。

3. 在定义了虚函数之后, 只要定义一个基类的指针,就可以调用子类的函数:

 

base *p;

derived obj;

p= &obj; // p 指向对象派生类 obj

p->print( ); // 动态联编,

//调子类成员函数

 

 

实验内容:

设定义了基类 shape, 和派生类 square及circle,其定义为:

 

class shape {

public:

virtual float area( )

{return 0.0; }

};

 

class square: public shape {

public:

square(float b=0) { s=b; }

float area( ){ return s*s; }

private:

float s;

};

 

class circle: public shape {

public:

circle(float a=0) { r=a;}

float area( ){ return 3.14*r*r; }

private: private:

ffloat r;

};

 

 

4.请在基类中加入虚函数 PrintShapeName 用来打印图形的名称,在派生类中同样加入该函数,并编写一main.cpp文件对上述加入的函数进行应用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值