文档库 最新最全的文档下载
当前位置:文档库 › 福师10秋学期《C++语言程序设计》在线作业一(有答案)

福师10秋学期《C++语言程序设计》在线作业一(有答案)

一、单选题(共 30 道试题,共 60 分。)
1. 下面列出的保留字中,不能作为函数的返回类型的是( C)
A. void
B. int
C. new
D. long
2. 下面关于类的对象性质的描述,正确的是(D )
A. 对象之间不可以相互赋值
B. 不可以说明指向对象的指针
C. 对象不能用作数组元素
D. 一个对象能用作另一个对象的成员
3. 循环体至少被执行一次的语句为( C)
A. for循环 B. while循环 C. do循环 D. 任一种循环
4. 要使几个不同数据类型的数据共享同一块内存区域,应使用(C )
A. 数组 B. 结构 C. 联合 D. 文件
5. 要声明一个有10个int型元素的数组,正确的语句是( A)
A. int a[10]; B. int a[2,5]; C. int a[]; D. int *a[10];
6. 下面程序的结果是什么?Int i=3,j=4;i?i++:j++;printf(“%d %d\n”,i,j);( B)
A. 3 3 B. 4 4 C. 3 4 D. 4 3
7. 下列运算符中,运算对象必须是整型的是( B)
A. / B. % C. = D. &
8. 下面关于new 和delete操作符的说法中,不正确的是(D )
A. 使用new操作符,可以动态分配全局堆中的内存资源
B. 若p的类型已由A*强制转换为void *,那么执行语句delete p;时,类A的析构函数不会被调用
C. 实现全局函数时,new和delete通常成对地出现在由一对匹配的花括号限定的语句块中
D. 执行语句A * p=new A[100]时,类A的构造函数只会被调用1次
9. 下列叙述正确的是(A )
A. 一个程序中可以有多个#include命令行
B. 在#include命令行中,用双引号和用尖括号将被包含的文件名括起来没有区别
C. #include命令行只能放在程序开始位置 D. #include命令后也必须以分号结束
10. 表达式9!=10的值为( D) A. 非零值 B. true C. 0 D. 1
11. 下面说法中,正确的是(C )
A. 公有派生类的成员函数可以访问基类的私有成员
B. 私有派生类的成员函数可以访问基类的私有成员
C. 无论公有派生还是私有派生,派生类的成员函数均可以访问基类的公有成员
D. 无论公有派生还是私有派生,派生类的成员函数均可以访问基类的私有成员
12. 下列关于C++语言类的描述中错误的是(C )
A. 类用于描述事物的属性和对事物的操作
B. 类与类之间通过封装而具有明确的独立性
C. 类与类之间必须是平等的关系,而不能组成层次结构
D. 类与类之间可以通过一些方法进行通信和联络
13. 在C++语言中,为了使得类中的某些数据成员及某些成员函数的返回值能取任意类型,应使用(B )
A. 类 B. 类模板 C. 抽象类 D. 虚基类
14. 虚函数使用关键字(A )
A. virtual B. static C. public D. private
15. 下列字符中不能构成标识符的是(D )
A. 数字字符 B. 大写字母 C. 下划线字

符 D. 连接符
16. 已知函数test定义为:void test() { ………… } 则函数定义中void的含义是( A)
A. 执行函数test后,函数没有返回值 B. 执行函数test后,函数不再返回
C. 执行函数test后,函数返回任意类型值 D. 以上三个答案都是错误的
17. 下列运算符中,( C)运算符在C++中不能重载
A. && B. [] C. :: D. new

18. 若x,y,z均被定义为整数,则下列表达式终能正确表达代数式1/(x*y*z)的是(B )
A. 1/x*y*z B. 1.0/(x*y*z) C. 1/(x*y*z) D. 1/x/y/(float)z
19. 已知:print( )函数是一个类的常成员函数,且无返回值。在下列表示中,正确的是(A )
A. void print( ) const; B. const void print( );
C. void print( ); D. void print(const);
20. 下列对引用的陈述中,不正确的是(C )
A. 每一个引用都是其所引用对象的别名,因此必须初始化B. 形式上针对引用的操作实际上作用于它所引用的对象
C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D. 不需要单独为引用分配存储空间
21. 在C++语言中,二维数组元素在内存中的存放顺序是(A )
A. 按行存放 B. 按列存放 C. 由用户自己定义 D. 由编译器决定
22. 下面不能正确表示a*b/(c*d)的表达式是(A )
A. (a*b)/c*d B. a*b/(c*d) C. a/c/d*b D. a*b/c/d
23. 下列四个运算符中,优先级最低的是(D )
A. () B. -> C. . D. ++
24. 下面有关重载函数的说法中正确的是( C)
A. 重载函数必须具有不同的返回值类型 B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表 D. 重载函数名可以不同
25. 下列哪项不是面向对象程序设计的主要特征( D)
A. 封装 B. 继承 C. 多态 D. 结构
26. 下列各个成员函数中,纯虚函数是( D)
A. void fun(int)=0 B. virtual void fun(int)
C. virtual void fun(int){ } D. virtual void fun(int)=0

27. 下列关于函数模板和模板函数的描述,错误的是( D)
A. 函数模板是一组函数的模板 B. 模板函数是一个实在的函数
C. 函数模板是定义重载函数的一种工具
D. 模板函数在编译时不生成可执行代码
28. 下列关于构造函数说法不正确的是( D)
A. 构造函数必须与类同名 B. 在构造函数中可以对类中的成员进行初始化
C. 构造函数可以省略不写 D. 构造函数必须有返回值
29. 下列各种高级语言中,______是面向对象编程语言。( C)
A. BASIC B. C语言 C. C++语言 D. Pascal语言
30. 下列的各函数中, 不是类的成员函数的是(C )
A. 构造函数 B. 析构函数 C. 友元函数 D. 复制构造函数
二、判断题(共 20 道试题,共 40 分。)
1.

在使用C语言库函数时,要用预编译命令“#include”将有关的头文件包括到用户源文件中。(√ )
2. 系统可以提供默认的析构函数。(√ )
3. 引用的目的主要用于在函数参数传递中,解决大对象的传递效率和空间都不如意的问题。(√ )
4. NULL是空指针值,它不指向任何地方。(√ )
5. 自增运算符和自减运算符只能用于变量,不能用于常量或表达式 。(√ )
6. 指向同一数组的两指针p1、p2相减的结果与所指元素的下标相减的结果是相同的。(√ )
7. 内联函数是为了提高编程效率而实现的,它克服了用#define宏定义所带来的弊病 。(√)
8. 在程序运行过程中,其值不能被改变的量称为常量(√ )
9. 在一个函数中,不允许定义与结构体类型的成员相同名的变量。(√ )
10. 声明一个结构并不分配内存,内存分配发生在定义这个新数据类型的变量中。(√)
11. 一般float类型数据在内存中占4个字节,double型数据占8个字节,long double型数据占8个字节。( )
【注】按教材应选A *long double为10字节,按判分程序要选B√。

12. 私有成员只能被本类的成员函数访问,来自类外部的任何访问都是非法的。( *)
13. 指针在使用前可以不进行初始化(* )
14. 在一个函数内的复合语句中定义的变量在本函数范围内有效。(* )
15. 字符型变量用来存放字符常量,可以存放多个字符。( *)
16. 在内存中,字符数据以ASCII码存储,即以整数表示。(√)
17. C语言程序总是从主函数开始执行,在主函数结束。(√ )
18. sizeof运算符用于计算某种类型的对象在内存中所占的字节数。(√)
19. 用一个标识符代表一个常量的称为符号常量,符号常量不同于变量,它的值在其作用域内不能改变,也不能再被赋值。(√ )
20. 在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。(√ )
一、单选题(共 30 道试题,共 60 分。)
1. 析构函数在什么时间开始调用。( D)
A. 类创建 B. 创建对象 C. 引用对象 D. 释放对象
2. 以下哪个不是循环语句( D)
A. while语句 B. do-while语句
C. for语句 D. if-else语句
3. 能正确表示x>=3或者x<1的关系表达式是( C)
A. x>=3 or x<1 B. x>=3|x<1 C. x>=3||x<1 D. x> =3&&x<1
4. 如果变量x,y已经正确定义,下列语句哪一项不能正确将x,y的值进行交换(D )
A. x=x+y,y=x-y,x=x-y B. t=x,x=y,y=t
C. t=y,y=x,x=t D. x=t,t=y,y=x
5. 一个类的友元函数或友元类能够通过成员操作符访问该类的(D )
A. 私有成员 B. 保护成员 C. 公有成员 D. 所有成员
6. 以下各选项企

图说明一种新的类型名,其中正确的是(C )
A. typedef v1 int; B. typedef v2=int;
C. typedef int v3; D. typedef v4: int;
7. 如要求在if后一对括号中的表达式,表示a不等于0的时候的值为"真",则能正确表示这一关系的表达式为(D )
A. a<>0 B. !a C. a=0 D. a
8. 派生类公有继承基类时,基类中的所有公有成员成为派生类的______。( A)
A. public 成员 B. 友员 C. protected成员 D. private成员
9. 函数重载体现了面向对象的( B)
A. 封装性 B. 多态性 C. 继承性 D. 抽象性
10. 已知下列语句中的x和y都是int型变量,其中不正确的语句是(D )
A. y+=++x; B. ++x+=y; C. y=x++; D. x++=y;
11. 下列函数中,可以为虚函数的是(D )
A. 自定义的构造函数 B. 拷贝构造函数 C. 静态成员函数 D. 析构函数
12. 静态成员函数仅能访问( A)
A. 静态的数据成员 B. 非静态的成员函数C. 非静态的数据成员
D. 以上都不对
13. 在下边的二维数组定义中,正确的是( C)
A. int a[5][]
B. int a[][5]
C. int a[][3]={{1,3,5},2}
D. int a[](10)
14. 设B类是由A类继承的。当创建一个B类的对象时,构造函数的调用顺序是(A )
A. 先调用A类的构造函数,然后调用B类的构造函数
B. 先调用B类的构造函数,然后调用A类的构造函数
C. 不调用A类的构造函数
D. 视定义时A类和B类出现的位置
15. 以下函数的返回结果是(A )int function(char *x) { char *p=x; while(*p++);
return(p-x-1); }
A. 求字符串的长度 B. 将字符串x连接到字符串p后面
C. 将字符串x复制到字符串p中 D. 将字符串x反向存放
16. 关于异常和C++提供的异常处理机制。不正确的说法是( A)
A. 若程序员预见到程序的异常,则一定可以通过修改程序代码来避免异常出现
B. 使用dyname cast操作符可能会发生异常
C. 异常可以用catch捕获处理
D. 异常可以是对象,也可以是普通函数
17. 以下哪个不是循环语句(D )
A. while语句 B. do-while语句 C. for语句 D. if-else语句
18. 能做为C++程序基本单位的是(C )
A. 字符; B. 语句; C. 函数; D. 源文件;
19. 如果有char* ssl=“ 0123456789”,则,sizeof(ssl)的值是(A )
A. 4 B. 10 C. 11 D. 40
20. 已知字符'b'的ASCII码为98,语句printf("%d,%c",'b','b'+1 );的输出为( D)
A. 98,b B. 语句不合法 C. 98,99 D. 98,c
21. 下列对基类和派生类关系的描述中,错误的是(B )
A. 派生类是基类的具体化 B. 派生类是基类的子集
C. 派生类是基类定义的延续 D. 派生类是基类的组合
22. C++程序源文件默认的扩展名是( C)
A. cs B. obj C. cpp D. exe
23. 下面不是面向对象程序设计的特征的是(D )
A. 封

装 B. 继承 C. 多态 D. 结构
24. 在下列运算符中,优先级最低的是(A )
A. || B. != C. < D. +
25. 在一个源文件中定义的全局变量的作用域为( C)
A. 本程序的全部范围 B. 本函数的全部范围
C. 从定义该变量的位置开始到本文件结束
D. 以上说法都不正确
26. 若用数组名作为函数调用时的实参,则实际上传递给形参的是( A)
A. 数组首地址
B. 数组的第一个元素值
C. 数组中全部元素的值
D. 数组元素的个数
27. 当说明一个结构变量时,系统分配给它的内存是(A )
A. 各成员所需内存量的总和
B. 结构中第一个成员所需内存量
C. 成员中占内存量最大的成员所需的容量
D. 结构中最后一个成员所需内存量
28. 下列do-while循环的循环次数是( D): 已知:int i=5 do{ cout<(i!=0)
A. 0 B. 2 C. 5 D. 无限次
29. 下面的函数声明中, 哪一个是” void BC(int a, int b);”的重载函数? (B )
A. int BC(int a, int b)
B. void BC(int a, char b)
C. float BC(int a, int b, int c = 0)
D. void BC(int a, int b=0)

30. 如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:cA. 2 B. 3 C. 1 D. 4
二、判断题(共 20 道试题,共 40 分。)
1. C++中,一个函数必须在函数声明后才能使用(√)
2. 带extern的变量说明是变量声明,也是变量定义。( )
3. 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是8。(√)
4. typedef定义一个新的数据类型,在建立一个tepedef类型时同时分配内存空间( )
5. 函数的返回值也称函数值,返回的不是函数本身,而是一个值。(√ )
6. C++语言程序中,main()函数必须放在程序开始的部分( )
7. switch后面括号中的表达式只能是整型、字符型或枚举型表达式。(√)
8. C++语言程序必须要有return语句( )
9. C++语言中,标识符不区分大小写。( )
10. 静态就是让变量和函数在生命的区域内成为私有。(√)
11. 一个类的成员函数可以任意被调用( )
12. NULL与void *是不同的概念,NULL是一个指针值,任何类型的指针都可赋予该值。而void *是一种类型,是一种无任何类型的指针。(√)
13. 常对象必须进行初始化,而且不能被更新(√)
14. C++语言程序中,要调用的函数必须在main()函数中定义( )
15. C++中函数声明就是函数原型。(√ )
16. C++程序的开发步骤通常要经过编辑、编译、连接、运行调试这样几个步骤。(√)
17. 定义全局变量要在程序开始时进行,并且放在所有函数的外面,静态局部变量要在函数内部定义,但生命期却随函数的第一次被调用而产生。(√ )
18. 空类型指针不能进行指

针运算,也不能进行间接引用。(√ )
19. 通过使用不同的类型参数,函数模板可以生成不同类型的函数(√ )
20. 字符型数据在内存中的存储形式是ASCII码(√ )

相关文档
相关文档 最新文档