面向对象程序设计实验
实验一 C++基础 1.1实验目的 1. 了解并熟悉开发环境,学会调试程序; 2. 熟悉C++中简单的标准输入输出函数的使用方法; 3. 理解const修饰符的作用并学会应用; 4. 理解内联函数的优缺点并学会其使用场合; 5. 理解并学会函数重载; 6. 理解并熟练掌握使用new和delete来分配内存; 7. 理解并熟练掌握引用的使用方法。 1.2实验内容 1.2.1程序阅读 1. 理解下面的程序并运行,然后回答问题。 #include int max_def(int x, int y) { return (x>y?x:y); } int max_def(int x, int y, int z) { int temp = 0; return (temp=(x>y?x:y))>z?temp:z; ) double max_def(double x, double y) { return (x>y?x:y); } int main() int xl = 0; int x2 = 0; double dl = 0.0; double d2 = 0.0; xl = max_def(5,6); x2 = max_def(2,3,4); dl = max_def(2.1,5.6); d2 = max_def( 12.3,3*4,7.8);① cout«“x l=“«x 1 «endl; cout«“x2=n«x2«endl; cout«“d l- «d 1 «endl; cout«nd2=“«d2«endl;② return 1; } 问题一:上述程序的输出结果是什么? c *D:\C++\Debug\Cpp1. * xl =6 x2 =4 dl=5.6 H2=12 Press any key to continue 问题二:用的是哪个函数? 答:调用的函数是 int max_def(int x, int y, int z) { int temp = 0; return (temp=(x>y?x:y))>z?temp:z; ) 问题三:②处的输出结果为什么是d2=12,而不是d2=12.3? 答:因为①处调用的是整型函数,d2在此函数中被转换为整型,小数点后面被删除。 2. 理解下面的程序并运行,然后回答问题。 #include int main() int *pl = new int;① int *p2 = new int(O);② char *p3 = new char[10];(3) return 1; ) 问题一:①、②、③处动态申请内存分别代表什么意思? 答:①new动态分配存放一个整数的内存空间,并将其首地址赋给指针变量pl;②new动态 分配存放一个整数的内存空间,并对其初始化赋值为0,并将其首地址赋给指针变量p2;③new 动态分配存放10个字符型数组元素的内存空间,并将其首地址赋给指针变量p3。 问题二:该程序存在什么不合理的地方?。 答:程序结束时没有将分配的空间释放,应该使用delete函数释放内存。 3. 理解下面的程序并运行,然后回答问题。 #include 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«“Before swap: i=, «i«“,j=, «j«endl; swap(i,j);① cout«“After the first swap: i=“«i«“,j=n«j«endl; swap(② cout«nAfter the second swap: i=“«i«“,j=n«j«endl; return 1; ) 问题一:输出结果是什么? c *E:\Debug\Cpp1. * Before swap: i=5,j=10 After the first swap: i=5,j=10 After the second swap: i=10,j=S Press any key to continue 问题二:①处函数调用不能实现两个数的交换,而②可以,原因是什么? ②处调用的函数使 答:①处调用的函数只是交换了局部变量a和b,并没有改变i和j的值; 用了引用形参,i和j的值随着此处调用的函数中a和b的对换而对换。 问题三:②处调用的是哪个函数? 答:调用的函数是 void swap(int a, int b) { int temp = a; a = b; b = temp; ) 1.2.2程序设计 i. 定义两个重名函数,分别求出两点间平面距离和空间距离。 #include #include using namespace std; int distance(int xl,int yl ,int x2,int y2) ( double dis; dis=sqrt((xl-x2)*(xl-x2)+(yl-y2)*(yl-y2)); cout«dis«endl; return dis; int distance(int xl,int yl,int x2,int y2,int zl,int z2) double dis; dis=sqrt((xl-x2)*(xl-x2)+(yl・y2)*(yl-y2)+(zl-z2)*(zl-z2)); cout«dis«endl; return dis; } void main() ( int a; int i,j,k,l,q,w,e,r,t,y; cout«“请输入平面两点坐标:“<