1、全国 2012 年 10 月自学考试 C+程序设计试题 课程代码: 04737 选择题部分 一、单项选择题 (本大题共 20 小题,每小题 1 分,共 20 分 ) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。 1.使用下列哪一限定符可强制改变访问方式 A.const B.short C.1ong D.signed 2.下列表达式,哪一是声明 P 为指向常量的指针 A.const int *p B.int* const p; C.const int *const p D.int *p 3.运算符:叫做 A.下标运算符 B.
2、自增运算符 C.成员访问运算符 D.作用域运算符 4.如果为一个类定义了自己的构造函数,下列描述正确的是 A.系统不再提供默认构造函数,但提供其他构造函数 B.系统提供其他非默认构造函数 C.系统不再提供默认构造函数 D.系统仍提供默认构造函数 5.对于类中的成员,使用 protected 修饰,表明该成员的访问权限是 A.公有的 B.私有的 C.保护的 D.不可见的 6.类不是内存中的物理实体,只有当使用类产生对象时,才进行内存分 配,这种对象建 立的过程称为 A.程序化 B.结构化 C.过程化 D.实例化 7.下列关于类的权限描述错误的是 A.类本身的成员函数可以访问自己定义的任何成员 B
3、.类的对象只能访问公有成员 C.普通函数只能通过对象访问类的公有成员 D.一个类不能包含另一个类的对象作为成员 8.在派生中,访问控制方式没有下列哪种 A.publish B.public C.protected D.private 9.采用重载函数的目的是 A.实现共享 B.减少空间 C.提高速度 D.使用方便,提高可读性 10.设类 A中包含若干其他类的对象作为成员,则在定义类 A的构造函数时,应使用下列哪个符号将A: A(参数表 )与成员初始化列表隔开 A., B.; C.: D. 11.设存在数组 a,其长度为 Len,则下列哪个泛型算法用于对 a 进行升幂排序 A.reverse(a
4、, a+Len); B.sort(a, a+Len); C.find(a, a+Len, value); D.copy(a, a+Len, b); l2.函数 int sum(int a=10, int b=15, int c=25);不可与下列哪个函数同时声明 A.int sum(int, int, int, int) B.int sum(int, int, int) C.int sum(double) D.int sum(double, double, double); 13.对函数 int saveName(char * first, char * sec=“ “, char * thd
5、=“ “)下列调用方法不正确的是 A.int s=saveName(“1“, “2“, “3“); B.int s=saveName(“1“, “2“); C.int s=saveName(“1“); D.int s=saveName(“1“, “3“); 14.下列哪个不是函数重载需要满足的条件 A.返回值类型不同 B.参数个数不同 C.参数个数相同时,参数类型不同 D.函数名相同 15.关于对象性质,下列描述错误的是 A.同一类对象之间不可相互赋值 B.可以使用对象数组 C.对象可以用作函数参数 D.一个对象可以用作另一个类的成员 16.可用作 C+语言用户标识符的一组标识符是 A.voi
6、d, define, +WORD B.a3_b3, _123, YN C.for, -abc, Case D.2a, DO, sizeof 1 7.设函数 int return temp; void disp()coutt1(4), t2(5), t3; t3=t1+t2; t3.disp(); 49.在下面 程序横线处填上适当内容,使程序执行结果为: n=2, sum=2 n=3, sum=5 n=5, sum=10 程序如下: #include class Test int n; static int sum; public: Test(int x)n=x; void add()_sum+
7、=n_; void disp() cout _class b_ class A int i; public: int set(B ); int get()return i; A(int x)i=x; ; class B int i; public: B(int x)i=x; _friend_ A; ; int A: set(B&b) return i=b.i; void main() A a(1); B b(2); cout class A public: virtual void printMe()cout template T func(T x, T y) if(sizeof(T)=8)
8、return x+y; else return x*y; void main() cout d: 六、程序设计题 (本 大题共 1 小题,共 10 分 ) 53.设计一个 Bank 类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。解: Bank类包括私有数据成员 top(当前账指针 ), date(日期 ), money(金额 ), rest(余额 )和 sum(累计余额 )。有三个成员函数 bankin()(处理存入账 ), bankout()处理取出账 )和 disp()(输出明细账 )请完成函数的实现。 本题程序如下: #include #include #define Max 100 class Bank int top; char dateMax10; /日期 int moneyMax; /金额 int restMax; /余额 static int sum; /累计余额 public: Bank()top=0; void bankin(char d , int m) void bankout(char d , int m) void disp() ; ;