2018年电大本科《C++语言程序设计》期末复习试题及答案参考资料全【精编打印版】 下载本文

内容发布更新时间 : 2024/6/28 22:54:42星期一 下面是文章的全部内容请认真阅读。

C. strcat() D. strcmp()

18. 预处理命令在程序中都是以(B)字符开头的。 A. * B. # C. & D. @

19. 假定有定义“struct BOOK{char title[40]; float price;};”,

则不正确的变量定义语句为(D)。

一、单选题 A. BOOK x; B. BOOK x={\1.在每个C++程序中都必须包含有这样一个函数,该函数Programming\的函数名为(A)。 C. BOOK *x=new BOOK; D. BOOK A. main B. MAIN C. name D. x=new BOOK; function 20. 假定AB为一个类,px为指向该类动态对象数组的指2.设x和y均为bool量,则x && y为真的条件是(D)。 针,该数组长度为n,则执行“delete []px;”语句时,自动调 A. 其中一个为假 B. 其中一个为真 用该类析构函数的次数为(B)。 C. 它们均为假 D. 它们均为真 A. 1 B. n C. n-1 D. n+1 3. 逻辑表达式x>0 || y==5的相反表达式为(B)。 21. 由C++源程序文件编译而成的目标文件的缺省扩展名

A. x<=0 || y!=5 B. x<=0 && y!=5 为(A)。 C. x>0 || y!=5 D. x>0 && y==5 A. obj B. lik C. exe D. cpp

4. 假定p是一个指向float型数据的指针,则p+1所指数据22. 程序运行中需要从键盘上输入多于一个数据时,各数据的地址比p所指数据的地址大(C)个字节。 之间应使用(D)符号作为分隔符。 A. 1 B. 2 C. 4 D. 8 A. 空格或逗号 B. 逗号或回车 5. 枚举类型中的每个枚举常量的值都是一个(A)。 C. 逗号或分号 D. 空格或回车 A. 整数 B. 浮点数 23. 设x是一个bool型的逻辑量,y的值为10,则表达式 x

C. 字符 D. 逻辑值 && y的值为(C)。

6. 循环体至少被执行一次的语句为(C)语句。 A. 1 B. 0 C. 与x值相同 D. 与x值 A. for循环 B. while循环 相反

C. do循环 D. 任一种循环 24. for语句能够被改写为(D)语句。

7. 在下面的字符数组定义中,(D)语句有语法错误。 A. 复合 B. if C. switch D. while A. char a[20]=”abcdefg”; B. char a[]=”x+y=55.”; 25. 在下面的do循环语句中,其循环体被执行的次数为 C. char a[15]={’1’,’2’}; D. char a[10]=’5’; (A)。 8. 若用数组名作为函数调用的实参,传递给形参的是(A)。 int i=0; do i++; while(i*i<10); A. 数组的首地址 B. 数组中第一个元素的值 A. 4 B. 3 C. 5 D. 2

C. 数组全部元素的值 D. 数组元素的个数 26. 在下面的一维数组定义中,(C)语句有语法错误。

9.假定AB为一个类,则执行“AB a(4), b[5], *p[2];”语句时, A. int a[]={1,2,3}; B. int a[10]={0}; 自动调用该类构造函数的次数为(A)。 C. int a[]; D. int a[5]; A. 6 B. 7 C. 9 D. 11 27. 下面的(C)保留字不能作为函数的返回类型。 10.当使用fstream流类定义一个流对象并打开一个磁盘文 A. void B. int C. new D. long 件时,文件的隐含打开方式为(D)。 28. 下面的函数声明中,(B)是“void BC(int a, int b);”的重载 A. ios::in B. ios::out 函数。

C. ios::in | ios::out D. 没有 A. int BC(int x, int y); B. void BC(int a, char b);

11. 枚举类型中的每个枚举常量的值都是一个(A)值。 C. float BC(int a, int b, int c=0); A. 整数 B. 浮点数 D. int BC(int a, int b=0);

C. 字符 D. 逻辑 29. 当类中一个字符指针成员指向具有n个字节的存储空

12.设x和y均为bool量,则逻辑表达式x || y为假的条件间时,它所能存储字符串的最大长度为(C)。 是(C)。 A. n B. n+1 C. n-1 D. n-2 A. 它们均为真 B. 其中一个为真 30. 假定AB为一个类,则该类的拷贝构造函数的声明语句

C. 它们均为假 D. 其中一个为假 为(D)。

13. 声明或定义一个内联函数时,必须在函数开始使用保留 A. AB&(AB x); B. AB(AB x); 字(D)。 C. AB(AB* x); D. AB(AB&); A. static B. const 31. C++程序的基本功能模块为(D)。

C. extern D. inline A. 表达式 B. 标识符

14. 在下面的函数声明中,存在着语法错误的是(D)。 C. 语句 D. 函数 A. BC(int a, int); B. BC(int, int); 32. 存储以下数据,占用存储字节最多的是(A)。

C. BC(int, int=5); D. BC(int x; int y); A. 0 B. ’0’ C. ”0” D. ’\\n’

15. 假定a为一个整型数组名,则元素a[4]与(C)的表示33. 在下面的一维数组定义中,有语法错误的是(C)。 等价。 A. int a[]={1,2,3}; B. int a[10]={0}; A. a+4 B. *a+4 C. int a[]; D. int a[5];

C. *(a+4) D. *(a+16) 34. 在下面的语句或语句组中,(B)不正确。

16. 下面循环语句执行结束后输出的i值为(B)的值。 A. int a[5]; B. int M=10; int a[M]; for(int i=0; in/2) {cout<

内部文件,版权追溯 内部文件,版权追溯 本科《C++语言程序设计》期末复习模拟训练题

1

A. 1~19 B. 1~20 C. 0~19 时进行 初始化 。 D. 0~20 22.执行“int x=45,y=16;cout<

2

A. n B.(n+1)/2 C. n(n-1)/2 D. n(n+1)/2 4 。 39. 若函数声明为double* function(), 则该函数的返回值为27表达式a=a+b表示成复合赋值表达式为 a+=b; 。 (B)。 28.表达式a=a+1表示成增量表达式为 ++a; 。 A. 实数型 B. 实数指针型 C. 函数指针型 D. 数29.增量表达式+ +y表示成赋值表达式为 y=y+1; 。 组型 30.关系表达式(x= =0)的等价表达式为 !(x! =0)。 40. 假定变量m定义为“int m=7;”,则定义变量p的正确语31.关系表达式(x! =0)的等价表达式为 !(x= =0) 。 句为(B)。 32.关系表达式x+y>z的相反表达式为 x+y<=z 。 A. int p=&m; B. int *p=&m; 33.逻辑表达式x>5&& x<10的相反表达式x<=5 || x>=10 。

C. int &p=*m; D. int *p=m; 34.逻辑表达式a>b | | b= =5的相反表达式为a<=b && b!=5 。 二、填空题 35.若x=15,y=40,则x>y 和x<=y的逻辑值分别为false1.C++语言中的每条基本语句以 ; 作为结束符,每条复合或0 和true或1 。 语句以 } 作为结束符。 36.假定x=5,则执行“a=(x? 10:4*2);”语句后a的值为10 。 2.用于输出表达式值的标准输出流对象是cout ,用于从37.假定a=5,则条件表达式“a= =0? 10:20”的值为 20。 键盘上为变量输入值的标准入流对象是 cin 。 38.执行“typedef int Data Type;”语句后,在使用int定义3.当不需要函数返回任何值时,则应把该函数类型定义为 整型变量的地方都可以使用 void 。 Data Type 定义整型变量。 4.执行“cout<<143<<’+’<<18<<’=’<<143+18<

10.在C++语言中,用转义字符序列 ’\\n’ 或’\\12’ 或’\\x0a’ 45.在函数外定义的变量称为 全局 变量,若没有被初始或操纵符 endl 表示输出一个换行符。 化则系统隐含对它赋初值 0 。 11.执行“cout<

16.假定一个枚举类型的定义为“enum 52.假定p所指对象的值为25,p+1所指对象的值为50,RB{ab,ac=3,ad,ae}x=ad;”则x的值为 4 。 则执行“*(p+ +);”语句后,p所指对象的值为 50 。表达式17.Char、short和int类型的大小分别为 1B 、2B 和 4B 。 值为:50 18.float和double类型的大小分别为 4B 和 8B 。 53.假定a是一个指针数组,则a+i所指对象的地址比a地19.十进制数128和-3.26的类型分别为 int 和 double 。 址大 i*sizeof(unsigned) 字节。 20.若需要定义一个标识符常量,并且使C++能够进行类54.假定a是一个一维数组,则a[i]的指针访问方式为 *( a+ 型检查,则应在定义语句的开始用保留字 const 。 i ) 。 21.使用const语句定义一个标识符常量时,则必须对它同55.假定a是一个二维数组,则a[i] [j]的指针访问方式为 *

2

(( a+i ) + j )。

56.假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为 a + sizeof(a[0])*i 。

57.假定一个二维数组为a[M] [N],则a[i] [j]对应的存储地址(以字节为单位)为 a+sizeof(a[0][0])*(i*N + j ) 。 58.假定一个二维数组a[M] [N],则a[i]的地址值(以字节为单位)为 a + sizeof(a[0][0])*(i*N) 。

59.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大 4 字节。 60.假定a为一个字符数组名,则元素a[8]的字节地址为 a + 8 。 61.假定a为一个整型数组名,则元素a[4]的字节地址为 a + 4*sizeof( int ) 或 a + 16 。

62.假定一个结构类型的定义为“struct A{int a,b;short c;A*d;};”,则该类型的大小为 14 字节。

63.假定一个结构类型的定义为“struct B{int a[8];char* b;};”,则该类型的大小为 36 字节。

64.假定一个结构类型的定义为“struct D{int a;union{int b;double c;}; D*d[3];};”,则该类型的大小为24字节。 65.假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为 Worker *r = new Worker [ n ] ; 。

66.假定要访问一个结构x中的由a指针成员所指向的对象,则表示方法为 *( x . a ) 。

67.假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为 *( p->b )。

68.在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的 构造函数 使其初始化。

69.当一个类对象被撤消时将自动调用该类的 析构函数 。

70.对基类数据成员的初始化是通过执行派生类构造函数中的 初始化表 来实现的。

71.对一个类中的数据成员的初始化可以通过构造函数中的 赋值语句 实现,也可以通过构造函数中的 初始化表 实现。

72.在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序的先 基类成员 ,后 类对象成员 ,最后 非类对象成员 。

73.当撤消一个含有基类和类对象成员的派生类对象时,将首先完成 类对象成员 的析构函数定义体的执行,接着完成 派生类 的析构函数定义体的执行,最后完成 基类 的析构函数定义体的执行。

74.设PX是指向一个类动态对象的指针变量,则执行“delete px;”语句时,将自动调用该类的 析构函数 。

75.当一个类对象离开它的作用域时,系统将自动调用该类的 析构函数 。

76.假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为 N 。

77.假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类构造函数的次数为 10 。

78.假定拥护没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为 AB ( ) { } 。

79.假定用户没有给一个名为AB的类定义析构函数,则系统为其隐含定义的析构函数为 ~ AB ( ) { } 。

80.若需要把一个函数“void f(); ”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:friend void f( ); 。

81.若需要把一个类AB定义为一个类CD的友元类,则应在类CD的定义中加入一条语句:friend class AB; 。 82.假定一个类AB中有一个静态整型成员bb,在类外的它进行定义并初始化为0时,所使用写法为:int AB::bb = 0 ; 。

83.假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员 bb的访问为AB::bb 。

84.当类中一个字符指针成员指向具有n个字节的储存空间时,它所能储存字符串的最大长度为 n-1 。

85.假定AB为一个类,则该类的拷贝构造函数的声明语句为 AB (AB & ); 。

86.对类对象成员初始化是通过执行构造函数中的 赋值语句 或 初始化表 完成的。

87.对于类中定义的成员,其隐含访问权限为private ,对于结构中定义的成员,其隐含访问权限为 public 。

88.一个类的友元函数或友元类能够通过成员操作符直接访问该类的 私有成员 。

89.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:AB& operator+(AB &); 。 90.在C++流类库中,根基类为 ios 。

91.在C++流类库中,输入流类和输出流类的名称分别为 istream 和 ostream 。

92.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用iostream.h头文件。

93.若要在程序文件中进行文件输入输出操作,则必须在开始的#include命令中使用fstream.h头文件。

94.当从字符文件中读取回车和换行两个字符时,被系统看作为一个 字符串流 。

95.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ios ::in,当使用ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ios::out 。当需要使用istream流类定义一个流对象并联系一个字符串时,应在文件开始使用#include命令,使之包含 strstrea.h 文件。

三、写出下列程序运行后的输出结果 1.#include void SB (char ch) {

switch (ch) {

case ’A’ :case ’a’:

cout <<”well”!” ; break case ‘B’: case ‘b’:

cout <<”good!” ;break; case ‘C’: case ‘c’:

cout <<”pass!” ;break; default :

cout << “bad!” ; break;}} void main ( ){

char al=’b’,a2=’c’,a3=’f’;

SB(al);SB(a2);SB(a3);SB(‘A’); Cout <

运行结果:good!pass!bad!well! 2、#include

#include

double SD(int a,int b,char op) {

double x; //局部变量x的改变不影响main函数中的x

switch (op) {

case ‘x’:x=double(a) + b; break; case ‘-‘: x=double (a)– b; break; case ‘*’: x=double (a) * b;break; case ‘/’:if (b) x=double (a)/b; else exit(1); break; default:exit(1); } return x;}

3