C++面向对象程序设计实验指导书谭浩强 联系客服

发布时间 : 星期三 文章C++面向对象程序设计实验指导书谭浩强更新完毕开始阅读4d395516edf9aef8941ea76e58fafab069dc444f

}

x2 = max_def(2,3,4); d1 = max_def(2.1,5.6);

d2 = max_def(12.3,3.4,7.8);-----------------------------------------------------① cout<<\cout<<\cout<<\

cout<<\② return 1;

问题一:上述程序的输出结果是什么? 答:

问题二:哪些情况可以参与函数的重载? 答:

问题三:①处调用的是哪个函数? 答:

问题四:②处的输出结果为什么是d2=12,而不是d2=12.3? 答:

2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

#include using namespace std; int main() {

int *p1 = new int; -----------------------------------------------------① int *p2 = new int(0); -----------------------------------------------------② char *p3 = new char[64]; -----------------------------------------------------③ return 1; }

问题一:①、②、③处动态申请内存分别代表什么不一样的意思? 答:

问题二:该程序存在什么隐患?改正该程序使隐患消除。 答:

3.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

#include using namespace std; void swap(int a, int b) {

int temp = a; a = b; b = temp; }

void swap(int *a, int *b) {

int temp = *a; *a = *b;

*b = temp; }

int main() {

int i = 5; int j = 10;

cout<<\

swap(i,j); -----------------------------------------------------① cout<<\

swap(&i,&j); -----------------------------------------------------② cout<<\ return 1; }

问题一:上述程序的输出结果是什么? 答:

问题二:①处函数调用后并不能实现两个数的交换,而②处却可以,为什么? 答:

问题三:②处调用的是哪个重载函数? 答:

2.2.2 程序设计

1.使用函数重载的方法定义两个重名函数,分别求出整形数平面间两点间距离和双精度平面间两点间距离,如果没有输入第二点的坐标则默认为圆点(0,0)。

2.设计一个函数:exchange(float x, float y, float z),当调用exchange(a,b,c)时,将a的内容赋值给b,b的内容赋值给c,c的内容赋值给a,要求采用引用的方式来实现。

2.3 思考题

1.自己设计一个程序,测试const的三种用法:指向常量的指针,常指针,指向常量的常指针。

2.编写一个函数,实现两个字符串变量的交换,要求参数用引用。

实验三 类和对象(一)

3.1 实验目的

1.类的定义; 2.类对象的使用;

3.类成员变量的定义和使用; 4.类成员函数的定义和使用; 5.理解类的作用域; 6.理解类的声明;

7.理解类中private和public权限的声明依据。

3.2 实验内容

1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

#include using namespace std; class CDate {

void Set(int m, int d, int y ) { month = m ; day = d ; year = y ; }

int IsLeapYear() { return (year%4 == 0 && year0 != 0)||(year@0 == 0); } public:

void Print() { cout<

int month; int day; int year; };

void main() {

CDate a; -----------------------------------------------------①

a.Set(10,15,2007) ; a.Print(); }

问题一:以上程序编译能通过吗,为什么,应该如何改正? 答:

问题二:类CDate中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限? 答:

问题三:①处语句的意思是什么? 答:

2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

#include using namespace std; int month;//全局变量 int day; int year;

void Set(int m,int d,int y) -----------------------------------------------------a {

::month=m; -----------------------------------------------------① ::day=d; ::year=y; }

class CDate {

public:

void Set(int m,int d,int y) -----------------------------------------------------b { ::Set(m,d,y); -----------------------------------------------------② }

void Print() { cout<

int month; //成员变量 int day; int year; };

void main() {

CDate a;

a.Set(10,15,2007) ; a.Print(); }

问题一:①处是在给成员变量赋值,还是在给全局变量赋值,如果去掉域作用符::,程序是否