自考C++程序设计2014年10月试题及答案解析
-
定义堆栈类模板Stack(先进后出),栈的大小由使用者确定。要求该类模板对外提供如下二种基本操作:
(1)push入找
(2)pop出栈,用数组来实现
#include ﹤iostream﹥
using namespace std;
template﹤class T, int size﹥
class Stack {
T x[size];
int current;
public:
Stack( ) { current =0; }
....push(....);
....pop(....);
}
请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)
-
给出下面程序的输出结果
#include ﹤iostream﹥
using namespace std;
class Simple
{
int x, y;
public:
Simple( ) { x=y=0; }
Simple( int i, int j) { x=i; y =j; }
void copy( Simple &s);
void setxy { int i, int j) { x=i; y=j; }
void print( ) { cout ﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y ﹤﹤ endl; }
};
void Simple:: copy( Simple &s)
{
x=s.x; y=s.y;
}
void func ( Simple s1, Simple &s2)
{
s1. setxy(30, 40);
s2. setxy(70, 80);
}
vpid main( )
{
Simple obj1(1, 2), obj2;
obj2. copy(obj1);
func(obj1, obj2);
obj1. print( );
obj2. print( );
}
-
请写出myText1. txt文本文件中的内容
#include ﹤iostream﹥
#include ﹤string﹥
using namespace std;
#include ﹤fstream﹥
void main( )
{
ofstream myFile1;
myFile1. open("myText1. txt");
cout﹤﹤"Enter the data in Chinese format(e. g. , 2008, May 25): "﹤ endl; string Date("2008, January 1");
string Year=Date. substr(0,4);
int k=Date. find( ",");
int i= Date. find(" ");
string Month= Date. substr(k+1, i-k-1);
tring Day = Date. substr(i+1, 2);
string NewDate=Day +" "+Month+" "+Year;
myFile1﹤﹤"original date: "﹤﹤ Date ﹤﹤ endl;
myFile1﹤﹤"Converted date: "﹤﹤NewDate ﹤﹤ endl;
myFile1. close( );
}
-
在下面下划线处填上正确的语句使序输出结果为 201 402 3 4 5
#include ﹤iostream﹥
using namespace std;
template ﹤class T﹥
T f(T &a, T &b, int n) {
for(int i=0; i﹤n; i++) {
a[i]=a[i]+b[i];
}
return a;
}
void main( ) {
int a[5]={1,2,3,4,5};
int b[5]={100,200,300,400,500}, *p;
for(int i=0; i﹤2; i++) {
p=_________;
}
for( ; p﹤a+5; p++){
cout ﹤﹤_________﹤﹤endl;
}
}
-
完成下面类的定义,使其可以正确的初始化成员变量m和n:
class point {
private: int m, n;
public:
point( int, int);
point(point &t);
};
point:: point(int a, int b) {
m=a; _________=b;
}
point:: point( _________ ) {
m=t. m;
n=t. n;
}
-
在下面横线处填上适当的语句完成类的定义。
#include ﹤iostream﹥
using namespace std;
class Base {
int x;
static const int b;
public:
Base (int, int);
const int *a;
};
_________ b=15;
Base:: Base( int i, int j): _________ { }
-
输入一个字符串,将其逆序输出:
#include ﹤iostream﹥
using namespace std;
void main( ) {
char a[50];
memset(a, 0, sizeof(a));
int i=0, j;
char t;
cin. getline( a, 50, '\n');
for(i=0, j=_________; i﹤_________; i++, j--) {
t=a[i];
a[i]=a[j];
a[j]=t;
}
cout ﹤﹤a﹤﹤ endl;
}
-
程序的输出结果如下:
Parent:: Parent( ) called.
Child:: Child( ) called.
Child:: ~Called( ) called.
Parent:: ~Parent( ) called.
根据输出结果在下面程序中的下划线出填写正确的语句
include ﹤iostream﹥
using namespace std;
class Parent
{
public:
Parent( ) { cout ﹤﹤"Parent:: Parent( ) called. \n"; }
vintual ~Parent( ) { cout ﹤﹤"Parent:: ~Parent( ) called. \n"; }
}:
class Child: public Parent
{
public:
Child(int i) {
cout﹤﹤"Child:: Child( ) called. \n";
buf=new char[i];
}
virtual ~Child( ) {
delete [ ]buf;
cout﹤﹤"Child:: ~Child( ) called. \n";
}
private:
char * buf;
};
void disp( _________ *a)
{
_________;
}
woid main( )
{
Parent *a=new Child(20);
disp(a);
int d;
cin ﹥﹥d;
}
-
#include ﹤iostream.h﹥
main( ) {
int x=5, y=6;
const int *p=&x;
*p=y;
cout﹤﹤*p﹤﹤endl;
}
-
#include ﹤iostream﹥
using namespace std;
main( ) {
int num;
max=10;
num=1;
while( num﹤max) num++;
cout ﹤﹤"num="﹤﹤num;
}
-
#include ﹤iostream.h﹥
class f {
private:
int x, y;
public:
void set( ) {
x=0; y=0;
}
void print( ) {
cout﹤﹤x﹤﹤" "﹤﹤y﹤﹤endl;
}
}
main( ) {
f a;
a. set(1,2);
a. print( );
}
-
#include ﹤iostream.h﹥
class f {
private:
int x =0, y =0;
public:
void set( int a, int b) {
x=a; y=b;
}
void get( ) {
cout﹤﹤x﹤﹤"; "﹤﹤y ﹤﹤endl;
}
};
main( ) {
f a;
a.set(1,3);
a. get( );
}
-
使用引用作为函数参数,实参对象和形参对象代表同一对象。改变形参对象的值就是改变_______对象的值。
-
UML中实例连接反映对象之间的静态关系,消息连接描述对象之间的_______ 关系。
-
#include ﹤iostream.h﹥
class point{
private:
float x, y;
public:
void f1(float a, float b){
x=a; y=b;
}
void get( ) {
cout ﹤﹤a﹤﹤b﹤﹤endl;
}
};
main( ) {
point a;
a. f1(2.2,3.3);
a. get( );
}
-
C++函数中传递对象地址值时使用_______作为参数。
-
为了使用C++语言标准程序库提供的string类,在程序中必须使用宏语句是_______。
-
若一个程序中使用如下语句申请了一个对象数组:point *prt=new point[2];则在需要释放pn指向的动态数组对象时,所使用的语句是_______.
-
设要把一个文件输出流对象myFile与文件“f:\myText.txt”相关联,所用的C++语句是_______。
-
定义虚函数所用的关键字是_______。
-
重载运算符保持其原有的操作符个数,_______和结合性不变。
-
类A有如下成员函数 int A:: fun(double x) { return (int)x/2; } int A:: fun(int x) { return x*2; } 在主函数中有int s=fun(6.0)+fun(2),则执行该语句后s的值为_______。
-
私有派生时,在派生类中基类的public权限变为_______。
-
C++重载“=”运算符的函数名是_______。
-
在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是_______。
-
string类中用于查找字符串中是否含有某一字符串的成员函数的第1个参数是_______。
-
C++类的构造函数名与_______名称一样,且没有返回值。
-
虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数的调用使用_______。
-
执行下列代码 cout﹤﹤showpoint﹤﹤123.0; 程序的输出结果是_______。
-
C++语言中用于释放动态分配内存的关键字是_______。
-
若类的成员函数用关键字static进行修饰,这样的成员函数称为_______。
-
在C++的类声明中,用public关键字声明的类成员的访问权限是_______。
-
函数模板template﹤typename T﹥void Func(T,T)不能具有哪种实例化形式?( )
- A.void Func(int, int)
- B.void Func(bool, bool)
- C.void Func(double, int)
- D.void Func(char, char)
-
在标准C++输入/输出方式中,用于设置转换基数为十进制的操控符是_______。
-
在定义结构时,为产生封装性,则需使用哪个关键字数据成员?( )
- A.public
- B.publish
- C.protected
- D.private
-
用于标识十六进制常量的前缀或后缀是( )
- A.无
- B.后缀L或l
- C.前缀零
- D.前缀0x
-
在类中使用static关键字修饰的成员函数称为( )
- A.全局成员函数
- B.公有成员函数
- C.静态成员函数
- D.非静态成员函数
-
使用new Point(5,7)创建对象,调用的是下列哪个构造函数?( )
- A.Point:: Point( )
- B.Point:: Point(int, int)
- C.Point:: Creat( )
- D.Point:: Creat(int, int)
-
类中的protected成员在何处访问?( )
- A.只类自身成员函数中
- B.只子类成员函数中
- C.类和子类的成员函数中
- D.通过对象类外访问
-
下列表达式,哪个是声明P为指向常量的常量指针?( )
- A.const int*P
- B.int *const P
- C.const int * const P
- D.int *P
-
类声明的内容用花括号括起来,在花括号后跟哪个符号表示类声明结束( )
- A.:
- B.;
- C.,
- D..
-
C++中函数中的return指令可以( )
- A.只能有一条
- B.0或多条
- C.至少有一条
- D.只能主函数调用
-
函数重载必须满足的条件是( )
- A.函数名相同
- B.参数个数不同
- C.参数类型不同
- D.函数名不相同
-
下列哪种类型的函数适合声明为内联函数?( )
- A.函数体语句较多
- B.函数体逻辑较复杂
- C.函数执行时间较长
- D.函数语句较少,执行速度要求高
-
析构函数的返回值类型为( )
- A.void
- B.bool
- C.int
- D.无类型
-
设类A中有静态数据成员x,两个A类对象a和b,若
- A.x=10,则
- B.x的值为( )
- C.9
- D.10
- E.11
- F.不能确定
-
C ++允许在结构中定义函数,这些函数称为( )
- A.静态函数
- B.构造函数
- C.析构函数
- D.成员函数
-
头文件扩展名为( )
- A..cpp
- B..h
- C..ub
- D..ob
-
声明函数为内联使用的关键字为( )
- A.const
- B.inline
- C.short
- D.signed
-
不同对象调用同名函数,但导致完全不同行为的现象称为( )
- A.抽象
- B.封装
- C.继承
- D.多态性
-
基类中的protected成员,通过哪种派生,其在派生类中的可见性为protected?( )
- A.public和private
- B.public和protected
- C.protected和private
- D.仅protected
-
基类中的public成员,通过public派生,基在派生类中的可见性为( )
- A.不可访问
- B.private
- C.protected
- D.public
-
在编译指令中,宏定义使用的指令是( )
- A.#include
- B.#define
- C.#if
- D.#else