习题参考答案
指针和引用
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 N['b']; B. int N[4,9]; C. int N[][]; D. int *N[10]; 答:B
(2)若有定义:int a=100,*p=&a;则*p的值是( A.变量p的地址 B. 变量a的地址值 C.变量a的值 D.无意义 答:C.
(3)下述程序的输出结果是( )。 #include <> void main() {
int a[5]={2,4,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 a[3][4]={{1,2,3,4},{5,6,7,8}}; int x, *p=a[0];
x=(*p)*(*p+2)*(*p+4); cout< A. 15 B. 14 C. 16 D. 13 答:A (5)若有以下定义,则下列对数组引用正确的是( int (*q)[3] = new int[2][3]; A. q[2][3] B. *q C. *(*q+2) D. 答:C )。 )。 *(*(q+2)+3) (6)若要用如下程序片段使指针变量p指向一个存储动态分配的存储单元: float *p; p=(float * ) new float; 则空白处应填入: A.float * B. *float C 省略; D.( float ) (7)下列表示引用的方法中,( )是正确的。 已知:int m=10; A. int &x=m; B. int &y= 10; &z; D. float &t = &m; 答:A 57.分析下列程序的结果。 #include <> int &fun( int n, int s[]) { int &m=s[n]; return m; } void main() { int s[] ={15,4,3,2,1,0}; fun(3, s)=10; cout< 答:10 58.用指针作为函数的参数,设计一个实现两个参数交换的函数。输入3个实数,按升序排序后输出。 59.编写函数void fun(int *a,int *n,int pos,int x);其功能是将x值插入到指针a所指的一维数组中,其中指针n所指存储单元中存放的是数组元素个数,pos为指定插入位置的下标。 60.编写函数void fun(char *s),其功能是将s所指的字符串逆序存放。 61 输入一个字符串, 串内有数字和非数字字符, 例如,\。将其中连续的数字作为一个整数,依次存放到另一个整型数组b中。如将2345存放到b[O]、345放入b[1]、678放入b[2]、……统计出字符串中的整数个数,并输出这些整数。要求在主函数中完成输入和输出工作。设计一个函数,把指向字符串的指针和指向整数的指针作为函数的参数,并完成从字符串中依次提取出整数的工作。 62.有5个学生,每个学生的数据结构包括学号、姓名、年龄、C++成绩、数学成绩和英语成绩、总平均分,从键盘输入5个学生的学号、姓名、3门课的成绩,计算3门课的总平均分,最后将5个学生的数据输出。要求各个功能用函数来实现。 第2章 C++面向对象程序设计 2.1 类和对象 1.什么是类类的定义格式类的成员一般分为哪两部分它们的区别如何 ⑴“类”是对具有共同的属性特征和行为特征的对象的概括和抽象。 ⑵类的定义格式: class 类名{ [ private:] 私有数据成员和成员函数 public: 公有数据成员和成员函数 }; ⑶类的成员一般分为数据成员和成员函数两部分。 ⑷数据成员一般用来表示对象属性特征,而成员函数一般表示了对象的可以进行的操作,即行为特征。 2.类与结构体有什么区别 类中可以包含两类成员――数据成员和成员函数;而标准C语言中的结构体只能包含数据成员;但是C++中的结构体对C语言中的结构体有扩展,C++中的结构体也可以两类成员――数据成员和成员函数;因此C++中的类和C++中的结构体出来在定义方式上不一样之外(class,struct ),还有就是它们的缺省封装字是不一样的,一个是private,一个是public。 3.什么是对象如何定义一个对象对象的成员如何表示 ⑴对象是类的实例,是类的变量。 ⑵对象的定义: 类名 对象名称; 或:类名 * 对象指针; ⑶对象成员的表示:对象名称.成员名字; 或: 对象指针→成员名字; 4.什么是构造函数构造函数有哪些特点 构造函数是类的成员函数,它有以下特点: 构造函数的名字必须与类名相同。 构造函数可以有任意的形参,但不能具有返回值。 定义对象时,编译系统会自动地调用构造函数。 构造函数可以重载 5.什么是析构函数析构函数有哪些特点 析构函数也是类的成员函数,它有以下特点: 析构函数名也应与类名相同,只是在函数名前面加一个波浪符~。 析构函数不能带任何参数,也没有返回值。 每个类有而且只能有一个析构函数。析构函数不能重载。