自我测验(每题只有一个正确答案,为2分)

1. 可用作C++语言用户标识符的一组标识符是(   )
A. void define +WORD
B. a3_b3 _123 YN
C. for -abc Case
D. 2a DO sizeof
               

2. 以下标识符中不全是保留字的是(   )
A. case for int
B. default then while
C. bool class long
D. goto return char
               

3. 以16进制表示8进制的123应为(   )
A. 053
B . 0x53
C . 53
D . 5.3e1
               

4. 0.0104 E12的有效位为(   )
A. 1
B . 2
C . 3
D . 4

5. 规格化0.0104 E12则表示为(   )
A. 0.0104E12
B. 0.104E11
C. 1.04E10 
D. 1.04E10 
               

6. 存储以下数据,占用存储字节最多的是(   )
A. 0
B .'0'
C . "0"
D . 0.0
               

7. const型变量在定义时就必须初始化,这种说法(   )
A. 正确
B. 错误


               

8. 下列的符号常量定义中,错误的定义是(   )
A. const M=10; 
B. const int M=20;
C. const char ch; 
D. const bool mark=true;
               

9. 12.3l占用( C )字节
A.2
B.4
C.8
D.10
               

10. struct {char s;int num;} A的长度应为(   )字节
A.2
B.3
C.4
D.5
               

11. struct {char s;int num;} A的长度应为(   )字节
A.2
B.3
C.4
D.5
               

12. 类型修饰符unsigned不能修饰(   )
A. char
B. int
C. long int
D. float \double
               

13. 表达式a>=x || b>2*y+10 || x的相反式是(   )
A. a<=x && b<=2*y+10 && !x
B. a<x && b<=2*y+10 && !x
          

14. 设 int a=3,b=4,c=5; 表达式( a+b ) >c&&b==c 的值是(   )
A.2
B.-1
C.0
D.1
               

15. 设x=3,y=3表达式 (x++,y+=x,++x) 的返回是(   )
A.3
B.4
C.5
D.6
               


16. 设x=2,y=3表达式 (x>y? x:y) 的返回是(   )
A.2
B.3
C.0
D.1
               

17. 在下列成对的表达式中,运算符“+”的意义不相同的一对是(   )
A.5.0+2.0和5.0+2
B.5.0+2.0和5+2.0
C.5.0+2.0和5+2 
D.5+2.0和5.0+2
               

18. 假定下列x和y均为int型变量,则不正确的赋值为(   )
A. x+=y++
B. x++=y++
C. x=++y
D. x=++y
               

19. 设 int a=2;则switch(a){
case 1:a++;
case 2:a--;
case3: --a;break; 
default: a++;break;} 执行后a为(  )
A.0
B.1
C.2
D.3
               

20. while(!x) 中的 (!x) 与下面条件(   )等价
A.x==1
B.x!=1
C.x!=0
D.x==0
               

21. 下列for循环的次数为(   )

for(i=0, x=0; !x && i<=5; i++){}
A.5
B.6
C.1
D.无限
               

22. 在下面循环语句中循环体执行的次数为(   )
for(int i=0; i<n; i++)
if(i>n/2) break;
A. n/2
B. n/2+1
C. n/2-1
D. n-1
               

23. int x=0;do x+=2; while(x<8); x被加了(   )次
A. 2
B. 3
C. 4
D. 5
               

24. 以下说法中正确的是(   )
A. C++程序总是从第一个定义的函数开始执行
B. C++程序总是从main函数开始执行
C. C++函数必须有返回值,否则不能使用函数
D. C++程序中有调用关系的所有函数必须放在同一个程序文件中
               

25. 函数原型语句正确的是(   )
A. int Function(void a); 
B.void Function (int);
C. int Function(a);
D.void int(double a);
               

26. 下面的哪个保留字不能作为函数的返回类型 (   )
A. void 
B. int 
C. new
D. long
               

27. 若定义了函数 double *function(), 则函数function的返回值为(   )
A. 实数型
B.实数的地址
C.指向函数的指针
D.函数的地址
               

28. 以下函数的返回结果是(   )

int function(char *x) {
char *p=x; while(*p++); return(p-x-1);
}
A. 求字符串的长度
B.将字符串x连接到字符串p后面
C. 将字符串x复制到字符串p中
D.将字符串x反向存放
               

29. 一个函数功能不太复杂,但要求被频繁调用,宜选用(   )
A.内联函数
B.重载函数
C.递归函数
D.嵌套函数
               

30. 在(   )情况下适宜采用inline定义内联函数
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
               

31. 函数重载是指(   )
A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C. 两个以上的函数名字不同,但形参的个数或类型相同
D. 两个以上的函数取相同的函数名,并且函数的返回类型相同
               

32. 以下关于函数模板叙述正确的是(   )
A. 函数模板也是一个具体类型的函数
B. 函数模板的类型参数与函数的参数是同一个概念
C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数
D. 用函数模板定义的函数没有类型
               

33. 设有函数模板
template<class Q>
Q Sum(Qx,Qy){
return(x)+(y);
}
则下列语句中对该函数模板错误的使用是(   )
A.Sum(10,2);
B.Sum(5.0,6.7);
C.Sum(15.2f,16.0f);
D.Sum(″AB″,″CD″);
               

34. 设有定义“static int data[5][6];”,设该数组在静态存储区中的起始地址为十进制的100,
若每个int型数占4个字节,则数组元素data[2][3]的地址为(   )
A. 115
B. 124
C. 130
D. 160
               

35. 在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"中,a[0][4]的值是(   )
A. 0
B. 2
C. 4
D. 6
               

36. 设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为(   )
A. array数组首地址
B. array数组中元素个数
C. array数组中每个元素所占的字节数
D. array数组占的总字节数
               

37. 用new运算符创建一个含10个元素的一维整型数组的正确语句是(   )
A. int *p=new a[10];
B. int *p=new float[10];
C. int *p=new int[10]; 
D. int *p=new int[10]={1,2,3,4,5}
               

38. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,

则队首的后一个位置为(   )
A. first+1 
B. (first+1)%MS
C. (first-1)%MS
D. (first+length)%MS
               

39. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,
队列长度为length,则队尾(即最后一个)元素的位置为(   )
A. length+1 
B. first+length
C. (first+length-1)%MS
D. (first+length)%MS
               

40. 单链表的每个结点中包括一个指针next,它指向该结点的后继结点.现要将
指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列
中哪一个是正确的?(   )
A. q=p->next; p->next=q->next;
B. p->next=q->next;q=p->next;
C. q->next=p->next; p->next=q;
D. p->next=q; q->next=p->next;
               

41. 面向对象软件开发中使用的OOA表示(   )
A. 面向对象分析
B. 面向对象设计
C. 面向对象语言
D. 面向对象方法
               

42. 面向对象的程序设计语言必须具备的要素是(   )
A.抽象和封装
B.抽象和多态性
C.抽象、封装、继承和多态性
D.抽象、封装和继承性
               

43. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(   )
A.类
B.对象
C.函数体 
D.数据块
               

44. C++中实现封装是借助于(   )
A.枚举
B.类
C.数组
D.函数
               

45. 类的构造函数被自动调用执行的情况是在定义该类的(   )
A.成员函数时
B.数据成员时
C.对象时
D.友元函数时
               

46. 已知:类A中一个成员函数说明如下:
  void Set(A&a);
  其中,A&的含义是(      )
A.指向类A的指针为a
B.将a的地址值赋给变量Set
C.a是类A对象的引用,用来作函数Set()的参数
D.变量A与a按位与作为函数Set( )的参数
               

47. 假定一个类的构造函数为A(int aa,int bb){a=aa--;b=a*bb--;},则执行A x(4,5);语句后,x.a和x.b的值分别为(   )
A. 4和5
B. 5和4
C. 4和20
D. 20和5
               

48. 通常,拷贝构造函数的参数是(   )
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
               

49. 类的析构函数的作用是(   )
A.一般成员函数
B.类的初始化
C.对象的初始化
D.删除对象创建的所有对象
               

50. 如果类A被说明成类B的友元,则(   )
A.类A的成员即类B的成员
B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员
D.类B不一定是类A的友元