欢迎您访问福建自考网!  今天是
当前位置: 网站首页 > 历年真题 >

全国2012年10月自学考试04737C++程序设计试题

2017-02-16 10:40来源:福建自考网
全国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.自增运算符
C.成员访问运算符                                         D.作用域运算符
4.如果为一个类定义了自己的构造函数,下列描述正确的是
A.系统不再提供默认构造函数,但提供其他构造函数
B.系统提供其他非默认构造函数
C.系统不再提供默认构造函数
D.系统仍提供默认构造函数
5.对于类中的成员,使用protected修饰,表明该成员的访问权限是
A.公有的                                                      B.私有的
C.保护的                                                      D.不可见的
6.类不是内存中的物理实体,只有当使用类产生对象时,才进行内存分配,这种对象建
立的过程称为
A.程序化                                                      B.结构化
C.过程化                                                      D.实例化
7.下列关于类的权限描述错误的是
A.类本身的成员函数可以访问自己定义的任何成员
B.类的对象只能访问公有成员
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,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=" ")下列调用方法不正确的是
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.void,define,+WORD                              B.a3_b3,_123,YN
C.for,-abc,Case                                         D.2a,DO,sizeof
1 7.设函数int& index(int a,int i)返回数组a中下标为i的元素,如果在整型数组int array[]={1,2,3},在执行index(array,1)+=3后,array中各元素值为
A.{4,2,3}                                                 B.{1,5,3}
C.{1,2,6}                                                 D.{4,5,6}
1 8.对指针动态分配空间用的关键字是
A.define                                                        B.int
C.new                                                           D.float
19.一个函数功能不太复杂,但要求被频繁调用,应选用
A.内联函数                                                  B.重载函数
C.递归函数                                                   D.嵌套函数
20.在int a=3,*p=&a;中,*p的值是
A.变量a的地址值                                        B.无意义
C.变量p的地址值                                        D.3
非选择题部分
注意事项:
用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
二、填空题(本大题共20小题,每小题1分,共20分)
21.默认参数是在______中说明的,默认参数可以多于1个,但是必须放在参数序列的后部。
22.类所声明的内容用______括起来,之间的内容称为类体。
23.执行代码double pi=3.141592;cout<<pi;程序的输出结果是______。
24.在文件输入流类中,用于判断提取操作是否已达到文件尾的方法是______。
25.常量成员包括常量数据成员,静态常数成员,和______。
26.通过C++语言中的______机制,可以从现存类中构建其子类。
27.如果一个函数直接或间接地调用自身,这样的调用称为______调用。
28.使用C++编译器对C++源程序进行编译产生文件的扩展名是______。
29.C++的类成员由数据成员和______组成。
30.C++面向对象程序设计的特点为:抽象,封装,继承和______。
31.C++标准库string类中用于在主串中检索所需字符串的成员函数是______。
32.C++中函数参数有两种传递方式:传值和______。
33.在删除一个动态对象时,将自动调用该动态对象所属类的______函数。
34.在C++当中,类外的函数只能通过类的对象使用该类的______。
35.简单成员函数是指声明中不含const,volatile,______关键字的函数。
36.执行cout<<char('a'+2)<<endl;后的显示结果为______。
37.假定类A有一个公有属性的静态数据成员b,在类外不通过对象名访问b的写法是______。
38.拷贝构造函数使用______作为参数初始化创建中的对象。
39.一旦基类定义了虚函数,该基类的派生类中的______也自动成为虚函数。
40.在C++类中,有一种类不能生成对象只能被继承,称之为______。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的类定义中有一处错误,请写出错误所在行并给出修改意见。
41.#include<iostream.h>
template<class T>
T minx(T x,T y){
if(x>y)
x=y;
return x;
}
void main()
{
int a;
double d;
cout<<minx(a,d)<<endl;
}
42.#include<iostream.h>
class People{
public:
void People(){}
const int age()const{return 15;}
char * name(){return"Green";}
} ;
void main()
{
const People s;
int i=s.age();
cout<<"age="<<i<endl;
}
43.#include<iostream.h>
class A{
public:void show(){cout<<"class A show"<<endl;}
} ;
class B{
public:void show(){cout<<"class B show"<<endl;}
} ;
class C:public A,public B{
public:void print(){cout<<"class C print"<<endl;}
} ;
void main(){
C c;
c.show();
c.print();
}
44.#include<iostream.h>
class Student{
int x=0,y=0;
public:
Student(){
x=1;
y=l;
}
Student(int a,int b){
x=a;
y=b;
}
void get(){
cout<<x<<" "<<y<<endl;
}
} ;
int main(){
Student student(5,6);
student.get();
}
45.#include <iostream.h>
class Base{
public:virtual void fun()=0;
} ;
class Test:public Base{
public:virtual void fun(){cout<<"Test.fun="<<endl;}
} ;
void main(){
Base a;
Test *p;p=&a;
}
四、完成程序题(本大题共5小题,每小题4分,共20分)
46.在下面程序横线处填上适当内容,使程序执行结果为:40:15
程序如下:
#include <iostream.h>
template<class T>
T func(T x,T y){
if(sizeof(T)==8)
return ______;
else
return ______;
}
void main(){
cout <<func(8,5)<<":"<<func(5.0,10.0)<<endl;
int d;cin >>d:
}
47.在下面程序横线处填上适当内容,使程序执行结果为:
x=0,y=0
x=1,y=2
x=10,y=20
程序如下:
#include<iostream.h>
class Sample
}
int x,y;
public:
Sample(){______}
Sample(______){x=a;y=b;}
void disp()
{
cout<<"x="<<x<<",y="<<y<<endl;
}
};
void main()
{
Sample s1,s2(1,2),s3(10,20);
Sample *pa[3]={&s1,&s2,&s3};
for(int i=0;i<3;i++)
pa[i]->disp();
}
48.在下面程序横线处填上适当内容,使程序执行结果为:
n=30
程序如下:
#include<iostream.h>
template<class T>
class Test
{
T n;
public:
Test(){}
Test(T i){n=i;}
Test<T>______(const Test<T>&s)
{
static Test<T>temp;
______;
return temp;
}
void disp(){cout<<"n="<<n<<endl;}
} ;
void main()
{
Test <int>t1(4),t2(5),t3;
t3=t1+t2;
t3.disp();
}
49.在下面程序横线处填上适当内容,使程序执行结果为:
n=2,sum=2
n=3,sum=5
n=5,sum=10
程序如下:
#include<iostream.h>
class Test
{
int n;
static int sum;
public:
Test(int x){n=x;}
void add(){______;}
void disp()
{
cout<<{"n="<<n<<",sum="<<sum<<endl;
}
} ;
int ______=0;
void main()
{
Test a(2),b(3),c(5);
a.add();
a.disp();
b.add();
b.disp();
c.add();
c.disp();
}
50.在下面程序中的横线处填上适当内容,使程序完整
#include<iostream.h>
______
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;}
______ A;
} ;
int A::set(B&b)
{
return i=b.i;
}
void main()
{
A a(1);
B b(2);
cout<<a.get()<<",";
a.set(b);
cout<<a.get()<<endl;
}
五、程序分析题(本大题共2小题,每小题5分,共10分)
51.下面程序中A是抽象类,其输出是什么?
#include <iostream.h>
class A{
public:
virtual void printMe(){cout<<"This is class A printing. "<<endl;};
} ;
class B:public A{
public:
void printMe() {cout << "This is class B printing. "<<endl;}
} ;
class C:public B{
public:
void printMe() {cout <<"This is class C printing. "<<endl;}
} ;
void print(A a)
{
a.printMe();
}
void main()
{
B b;
C c;
print(b);print(c);
}
52.写出此程序的执行结果:
#include <iostream.h>
template<class T>
T func(T x,T y){
if(sizeof(T)==8)
return x+y;
else
return x*y;
}
void main(){
cout <<func(8,5)<<":"<<func(5.0,10.0)<<endl;
int d;cin>>d:
}
六、程序设计题(本大题共1小题,共10分)
53.设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。解:Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。有三个成员函数bankin()(处理存入账),bankout()处理取出账)和disp()(输出明细账)请完成函数的实现。
本题程序如下:
#include<stdio.h>
#include<string.h>
#define Max 100
class Bank
{
int top;
char date[Max][10];//日期
int money[Max];//金额
int rest[Max];//余额
static int sum;//累计余额
public:
Bank(){top=0;}
void bankin(char d[ ],int m){…}
void bankout(char d[ ],int m){…}
void disp(){…};
} ;
本自学考试真题word文档下载:
全国2012年10月自学考试04737C++程序设计试题

上一篇:全国2012年10月自学考试02277微型计算机原理及应用试题

下一篇:全国2012年10月自学考试04747Java语言程序设计(一)试题