已知C++中一个函数的原型为void f(int &x, int &y),调用这个函数时,要把实在参数传递给
已知C++中一个函数的原型为void f(int &x, int &y),调用这个函数时,要把实在参数传递给形式参数,应该采用的参数传递方式是(30)。
A.传值调用
B.引用调用
C.复制恢复
D.传名调用
已知C++中一个函数的原型为void f(int &x, int &y),调用这个函数时,要把实在参数传递给形式参数,应该采用的参数传递方式是(30)。
A.传值调用
B.引用调用
C.复制恢复
D.传名调用
已知函数f的原型是void f(int *a,long&B) ;,变量v1、v2的定义是: int v1:long v2: 下列调用语句中正确的是
A.f(v1,&v2);
B.f(v1,v2);
C.f(&vl,&v2);
D.f(&vl,v2);
阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写对应栏内。
【说明】
下面的程序实现了类String的构造函数、析构函数和赋值函数。
已知类String的原型为:
class String
{
public:
String(coust char * str = NULL); //普通构造函数
String(const String &other); //拷贝构造函数
~String(void); //析构函数
String & perate =(const String &other); //赋值函数
private:
char * m_data; // 用于保存字符串
};
//String 的析构函数
String:: ~String (void)
{
(1);
}
//String 的普通构造函数
String: :String(const char * str)
{
if (2)
{
m_data = new char[1];
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new ehar[ length + 1 ];
strepy(m_data, str);
}
}
//拷贝的构造函数
String:: String(const String &other)
{ int length = strlen(other. m_data);
m_data = new char[ length + 1 ];
strepy(m_data, other, m_data); //赋值函数
String & String::operate = (eonst String &other) //
{
if (3)
return * this;
delete [] m_clara; //释放原有的内存资源
int length = strlen(other, m_data);
m_data = new chart length + 1 ];
(4);
return (5);
}
(10 ) 假定 Xcs 是一个类 , 该类中一个成员函数的原型为 “ Xcs *abc(); ” , 则在类外定义时对应的函数头为 【 10 】 。
A.void f(int&) const;
B.const A * f(const int );
C.A& f(int, int=50);
D.A f(const int&) const;
己知函数f的原型是“void f(int*x, int &y);”,变量v1、v2的定义是“int v1, v2;”,下列调用语句中,正确的是()。
A) f(v1, v2);
B) f(v1, &v2);
C) f(&v1, v2);
D) f(&v1, &v2);
阅读以下应用说明、图和C++代码,根据要求回答问题1至问题3。
[说明]
已知以下C++程序运行时的输出结果如下。
1:1
1:1
1:1
[C++程序]
01 include <iostream>
02 using namespace std;
03 class Stock{
04 protect:
05 (1) { };
06 Stock(int n, int pr=1) {
07 shares = n; share_val=pr;
08 };
09 void ~Stock() { };
10 public:
11 //成员函数
12 void output() {
13 (2)<< shares << ":" << share_val << endl;
14 }
15 private:
16 //成员变量
17 int shares;
18 int share_val;
19 };
20
21 void main() {
22 Stock a(1); a.output
23 Stock b; b.output
24 Stock c = Stock (); c.output
25 }
请根据C++程序运行时的输出结果,将代码中(1)、(2)空缺处的内容补充完整。
●试题一
阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。
【函数1.1说明】
函数strcpy(char*to,char*from)将字符串from复制到字符串to。
【函数1.1】
void strcpy(char*to,char*from)
{while((1 ) );}
【函数1.2说明】
函数merge(int a[ ],int n,int b[ ],int m,int *c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。
【函数1.2】
void merge(int a[ ],int n,int b[ ],int m,int *c)
{ int i,j;
for(i=j=0;i<n && j<m;)
*c++=a[i]<b[j]? a[i++]:b[j++];
while((2) )*c++=a[i++];
while((3) )*c++=b[j++];
}
【函数1.3说明】
递归函数sum(int a[ ],int n)的返回值是数组a[ ]的前n个元素之和。
【函数1.3】
int sum(int a[ ],int n)
{ if(n>0)return (4) ;
else (5) ;
}
试题五(共 15分)
阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
已知类 LinkedList 表示列表类,该类具有四个方法:addElement()、lastElement()、umberOfElement()以及removeLastElement()。四个方法的含义分别为:
void addElement(Object): 在列表尾部添加一个对象;
Object lastElement(): 返回列表尾部对象;
int numberOfElement(): 返回列表中对象个数;
void removeLastElement(): 删除列表尾部的对象。
现需要借助LinkedList来实现一个Stack栈类,C++代码1和C++代码2分别采用继承和组合的方式实现。
【C++代码 1】
class Stack :public LinkedList{
public:
void push(Object o){ addElement(o); }; //压栈
Object peek(){ return (1) ; }; //获取栈顶元素
bool isEmpty(){ //判断栈是否为空
return numberOfElement() == 0;
};
Object pop(){ //弹栈
Object o = lastElement();
(2) ;
return o;
};
};
【C++代码 2】
class Stack {
private:
(3) ;
public:
void push(Object o){ //压栈
list.addElement(o);
};
Object peek(){ //获取栈顶元素
return list. (4) ;
};
bool isEmpty(){ //判断栈是否为空
return list.numberOfElement() == 0;
};
Object pop(){//弹栈
Object o = list.lastElement();
list.removeLastElement();
return o;
};
};
【问题】
若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)? (5) (A. 继承 B. 组合)
根据下面类中Reverse 函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<< "Error!"<< endl; exit(1);}
MS=ms;
n=nn;
a=new int[MS];
for(int i=0; i
}
AA* Reverse(); // 对于调用该函数的对象,将其a 数组中前n 个
// 元素值按相反的次序排列,返回指向该对象的指针。
};