1、12.3,3.4,7.8-coutx1=x1endl;x2=x2d1=d1d2=d2-return 1;问题一:上述程序的输出结果是什么?问题二:用的是哪个函数?答:调用的函数是问题三:处的输出结果为什么是d2=12,而不是d2=12.3?因为处调用的是整型函数,d2在此函数中被转换为整型,小数点后面被删除.2理解下面的程序并运行,然后回答问题.int *p1 = new int; -int *p2 = new int -char *p3 = new char10; -、处动态申请内存分别代表什么意思?new动态分配存放一个整数的内存空间,并将其首地址赋给指针变量p1;new动态分配存放一个整
2、数的内存空间,并对其初始化赋值为0,并将其首地址赋给指针变量p2;new动态分配存放10个字符型数组元素的内存空间,并将其首地址赋给指针变量p3.该程序存在什么不合理的地方?.程序结束时没有将分配的空间释放,应该使用delete函数释放内存.3理解下面的程序并运行,然后回答问题.void swapint temp = a;a = b;b = temp;int *a, int *bint temp = *a;*a = *b;*b = temp;int i = 5;int j = 10;Before swap: i=i,j=jswapAfter the first swap:&i,&jAfter
3、the second swap:输出结果是什么?处函数调用不能实现两个数的交换,而可以,原因是什么?处调用的函数只是交换了局部变量a和b,并没有改变i和j的值;处调用的函数使用了引用形参,i和j的值随着此处调用的函数中a和b的对换而对换.处调用的是哪个函数?1.2.2 程序设计1定义两个重名函数,分别求出两点间平面距离和空间距离.#includecmathusing namespace std;int distancedouble dis;dis=sqrt*+disz1-z2void mainikl;a=distance请输入空间两点坐标qwerty;q,w,e,r,t,y2设计一个函数:ex
4、ch,当调用exch 时,将a赋值给b,b赋值给c,c赋值给a,要求采用引用的方式来实现.void exchint temp=p;p=n;n=m;m=temp;int a=1,b=2,c=3;a=ab=bc=creturn 0;1.3 思考题1自己设计一个程序,测试指向常量的指针,常指针,指向常量的常指针之间的区别.int a = 10;int const *p = &a;*pint b = 20;我们可以改变指针变量p所指向的内容,而不能改变p的地址空间,如添加上p = &b;我们就会发现编译错误!指向常量的指针const int*p,特点是指针所保存的地址可以改变,然而指针所指向的值却不可
5、以改变.同理,当添加*p = b时,会发生编译错误!指向常量的常指针const int const*p特点是指针所保存的地址不可变,指针所指向的数值也不可变.2编写一个函数,实现两个字符串变量的交换.void Exchg2 char tmp = *m; *m = *n; *n = tmp; void main char a = q char b = p b= Exchg2 cout实验三 类和对象构造函数与析构函数3.1 实验目的1理解this指针的作用和用法;2掌握构造函数的定义和作用;3掌握构造函数的使用;4掌握拷贝构造函数的定义和使用;5掌握构造函数的重载;6掌握析构函数的定义和使用.3
6、.2 实验内容3.2.1程序阅读1理解下面的程序并运行,然后回答后面的问题.class CPointpublic:void Setvoid Printprivate:int x;int y;void CPoint:Setx = x;y = y;Printx=x,y=yCPoint pt;pt.Setpt.Print2理解下面的程序并运行,然后回答后面的问题.class CPersonCPersonint age;char *name;CPerson:void CPerson:name=name,age=ageCPerson ps23,X三ps.Printint m,string nage=m;
7、name=n;string name;3.2.2 程序设计1设计实现一个CPoint类,满足以下要求:a 该类包含两个整型成员变量x横坐标和y纵坐标,以与一个输出函数Printclass CPointvoid printCPointx=0;y=0;pointint GetX return x;int GetY return y;printsetwCPoint:x=x1;y=y1; CPoint p; p.printp.pointp.printp.GetXstring.h#define N 3#define M 3class CStudentvoid setstudentvoid showstu
8、dentchar Sname10;char Sno8;float Score3;float Avg;float Sum;int count;void CStudent : setstudentint i;float Sum=0.0;int count=0;strcpySno,snfor Scorei=scorei; count+;3;Sum=Sum+Scorei;Avg=Sum/count;showstudentSnameSnoScoreiAvgplease input student name name; no no; score scorei;CStudent S1;student nam
9、eno15程序设计信号处理数据结构avg S1.setstudentS1.showstudent ifscoreik+;不与格人数:k实验五 派生与继承单基派生5.1 实验目的1理解继承的概念;2理解公有派生、私有派生和保护派生;3理解单基派生类中构造函数和析构函数的执行顺序.5.2 实验内容5.2.1程序阅读#include iostream.hclass CBaseCBaseaprotected:class CDerive : public CBaseCBase:int b;CDerive d;d.printCBase b;b.print以上程序有两个错误,试指出来,并改正之.派生类CDe
10、rive中没有定义CDerive,主函数中没有给d,b对象赋值.CDeriveb=c;CDerive dCBase bbase structureCBase,b,cderive structureCDerivederive destructureb.a=b.a以上程序的输出结果是什么,为什么?程序错误,不能输出结果.这个语句中调用了基类中的保护参数a.处语句执行完后,d.b.a的值为多少?b.a=2.实验七 多态性函数与运算符重载7.1 实验目的1理解静态联编和动态联编的概念;2掌握成员函数方式运算符重载;3掌握友元函数方式运算符重载;4掌握+、-、=运算符的重载.7.2 实验内容7.2.1程
11、序阅读class CComplexCComplexreal = 0; imag = 0;real = x;imag = y;int real;int imag;CComplex operator + -CComplex obj2return obj2;CComplex obj120, 30CComplex obj;obj = obj1+obj2; -cout obj.real obj.imag endl;处的运算符重载,为什么该函数的返回值要设计成CComplex类型?运算符重载函数的返回值与其操作类的类型相同.处的运算符重载函数调用就相当于obj=operator+,请问CComplex类中的运算符重载函数为什么只有一个参数?因为另一个参数是隐含调用,是CComplex类的当前对象.它通过this指针隐含地进行传递.real = 0.0;imag = 0.0;float x, float y
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1