VisualC++实用教程第4版-郑阿奇--习题参考题答案(共29页).doc
《VisualC++实用教程第4版-郑阿奇--习题参考题答案(共29页).doc》由会员分享,可在线阅读,更多相关《VisualC++实用教程第4版-郑阿奇--习题参考题答案(共29页).doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1.7 指针和引用55. 已知int d=5, *pd=&d, b=3; 求下列表达式的值。 A. *pd*b B. +*pd-b C. *pd+ D. +(*pd)答:15, 3 , 5, 6 56选择填充。(1)选择正确的说明语句为( )。A. int Nb; B. int N4,9;C. int N; D. int *N10;答:B(2)若有定义:int a=100,*p=&a;则*p的值是( )。 A变量p的地址 B 变量a的地址值 C变量a的值 D.无意义答:C(3)下述程序的输出结果是( )。#include void main() int a5=2,4,
2、6,8,10; int *p=a, *q=&p; cout*(p+), *q;A. 4,4 B. 2,2 C. 4,2 D. 4,5答:B(4)下述程序片段的输出是( )。int a34=1,2,3,4,5,6,7,8;int x, *p=a0;x=(*p)*(*p+2)*(*p+4);coutxendl;A 15 B 14 C 16 D 13答:A(5)若有以下定义,则下列对数组引用正确的是( )。int (*q)3 = new int23;A. q23 B. *q C. *(*q+2) D. *(*(q+2)+3)答:C(6)若要用如下程序片段使指针变量p指向一个存储动态分配的存储单元:
3、float *p;p=(float * ) new float;则空白处应填入: Afloat * B *float C 省略; D.( float )(7)下列表示引用的方法中,( )是正确的。已知:int m=10;A. int &x=m; B. int &y= 10; C.int &z; D. float &t = &m;答:A57分析下列程序的结果。#include int &fun( int n, int s) int &m=sn; return m;void main()int s =15,4,3,2,1,0; fun(3, s)=10; coutfun(3,s)endl;答:10
4、58用指针作为函数的参数,设计一个实现两个参数交换的函数。输入3个实数,按升序排序后输出。59编写函数void fun(int *a,int *n,int pos,int x);其功能是将x值插入到指针a所指的一维数组中,其中指针n所指存储单元中存放的是数组元素个数,pos为指定插入位置的下标。60编写函数void fun(char *s),其功能是将s所指的字符串逆序存放。61 输入一个字符串, 串内有数字和非数字字符, 例如,abc2345 345fdf678jdhfg945。将其中连续的数字作为一个整数,依次存放到另一个整型数组b中。如将2345存放到bO、345放入b1、678放入b2
5、、统计出字符串中的整数个数,并输出这些整数。要求在主函数中完成输入和输出工作。设计一个函数,把指向字符串的指针和指向整数的指针作为函数的参数,并完成从字符串中依次提取出整数的工作。62有5个学生,每个学生的数据结构包括学号、姓名、年龄、C+成绩、数学成绩和英语成绩、总平均分,从键盘输入5个学生的学号、姓名、3门课的成绩,计算3门课的总平均分,最后将5个学生的数据输出。要求各个功能用函数来实现。第2章 C+面向对象程序设计21 类和对象1什么是类?类的定义格式?类的成员一般分为哪两部分?它们的区别如何?“类”是对具有共同的属性特征和行为特征的对象的概括和抽象。类的定义格式:class 类名 pr
6、ivate: 私有数据成员和成员函数 public: 公有数据成员和成员函数 ;类的成员一般分为数据成员和成员函数两部分。数据成员一般用来表示对象属性特征,而成员函数一般表示了对象的可以进行的操作,即行为特征。2类与结构体有什么区别?类中可以包含两类成员数据成员和成员函数;而标准C语言中的结构体只能包含数据成员;但是C+中的结构体对C语言中的结构体有扩展,C+中的结构体也可以两类成员数据成员和成员函数;因此C+中的类和C+中的结构体出来在定义方式上不一样之外(class,struct ),还有就是它们的缺省封装字是不一样的,一个是private,一个是public。3什么是对象?如何定义一个对
7、象?对象的成员如何表示?对象是类的实例,是类的变量。对象的定义: 类名 对象名称; 或:类名 * 对象指针;对象成员的表示:对象名称.成员名字;或: 对象指针成员名字;4什么是构造函数?构造函数有哪些特点?构造函数是类的成员函数,它有以下特点:u 构造函数的名字必须与类名相同。u 构造函数可以有任意的形参,但不能具有返回值。u 定义对象时,编译系统会自动地调用构造函数。u 构造函数可以重载5什么是析构函数?析构函数有哪些特点?析构函数也是类的成员函数,它有以下特点:u 析构函数名也应与类名相同,只是在函数名前面加一个波浪符。u 析构函数不能带任何参数,也没有返回值。u 每个类有而且只能有一个析
8、构函数。析构函数不能重载。 6什么是默认构造函数和默认析构函数?假如用户没有自己编写构造函数或析构函数,编译系统也会自动生成一个构造函数和析构函数,这就是默认的构造函数和析构函数,但是这两个函数没有任何参数,也不进行任何操作。7什么是复制构造函数?它的功能和特点是什么?复制构造函数是一种特殊的构造函数,它用来在已存在的对象基础上建立一个新对象。 复制构造函数的名称也和类名是一样的,但是它的形式参数,都是指向一个已经存在的对象,因此它的形式参数都是这种形式:“const 类名 &ob”,即是一个对象的引用。8什么是静态成员?静态成员的作用是什么?9如何对对象进行初始化? 对象的初始化都是通过构造
9、函数进行的,只要在声明对象时,逐个添好构造函数的实参。10什么是友元?它的作用有哪些?什么是友元函数和友元类?11什么是this指针?它有何作用?一个类可以同时有很多对象存在,许多不同的对象可以调用相同的成员函数,编译系统为了知道当前是那个对象在调用成员函数,因此定义了this指针,this指针其实就是指向当前对象的指针。12什么是类的作用域?对象的生存期有何不同?类的作用域简称类域,它是指在类的定义中由一对花括号所括起来的部分,每一个类都具有相应的类域。类域中定义的变量不能使用auto,register和extern等修饰符,只能用static修饰符,函数也不能用extern修饰符。所谓对象
10、的生存期是指对象从被创建开始到被释放为止的时间,按生存期的不同对象可分为如下三种:1、局部对象:当对象被定义时调用构造函数,该对象被创建,当程序退出定义该对象所在的函数体或程序块时,调用析构函数,释放该对象。2、静态对象:当程序第一次执行所定义的静态对象时,该对象被创建,当程序结束时,该对象被释放。3、全局对象:当程序开始时,调用构造函数创建该对象,当程序结束时调用析构函数释放该对象。13分析下列程序的运行结果。程序1:#include #include class CCounter private: double m_value; public: void SetValue(double v
11、) m_value=v; double GetValue(); int GetNum(); ;double CCounter:GetValue() return sin(10.0*m_value);int CCounter: GetNum() return (int)m_value; void main() CCounter sam; sam.SetValue(50.0); coutThe value is: sam.GetValue()endl; coutThe num is: sam.GetNum()endl;程序2:#include #include class person int a
12、ge; char name10; public: void init(int i, char *str) age = i; strcpy(name, str); void display() coutname is age years old; ; void main() person demo; demo.init(30, LiMing); demo.display();程序3:#include #include class person int age; char *name; public: void init(int i, char *str) int j; j=strlen(str)
13、+1; name=new charj; strcpy(name, str); age = i; person() delete name; coutdestructor is called.; void display() coutname is age years oldn; ;void main() person demo; demo.init(30, LiMing); demo.display(); 程序4:#include class CSam public: static int m; CSam() m+; CSam( int n ) m = n; static void testm
14、() m+; ; int CSam:m =0;void main() CSam A; CSam B(3); A.testm(); CSam:testm(); coutm = B.mendl; 14定义一个描述学生基本情况的类,数据成员包括姓名、学号、C+、英语和数学成绩,成员函数包括输出数据、置姓名和学号、置3门课的成绩,求出总成绩和平均成绩。#include #include class CStudentInfo char stu_name20; char stu_id10; float C_score; float E_score; float M_score; public: CStud
15、entInfo(char *name, char *id) strcpy(stu_name,name); strcpy(stu_id,id); C_score=E_score=M_score=0.00; void Init(float score1, float score2,float score3) C_score=score1; E_score=score2; M_score=score3; float GetTotal() return (C_score+E_score+M_score); float GetAvg() return (C_score+E_score+M_score)/
16、3; void Display() coutName:stu_name ID:stu_idendl;coutC Language:C_score English:E_score Mathmetics: M_scoreendl; coutTotal is:GetTotal() Average is:GetAvg()endl; ;void main() CStudentInfo stu(andrew,); float score1,score2,score3; coutscore1;coutscore2;coutscore3; stu.Init(score1,score2,score3); stu
17、.Display(); 15设有一个描述坐标点的CPoint类,其私有变量x和y代表一个点的x、y坐标值。编写程序实现以下功能:利用构造函数传递参数,并设其默认参数值为60和75,利用成员函数display()输出这一默认的值;利用公有成员函数setpoint()将坐标值修改为(80,150),并利用成员函数输出修改后的坐标值。16以下是一个类的测试程序,给出类的定义,构造一个完整的程序。执行程序时的输出如下。输出结果:200-60=140主函数为:void main() CTest c; c.init(200, 60); c.print();CTest类的构造如下:#include clas
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualC 实用教程 郑阿奇 习题 参考 答案 29
限制150内