题库 题库

【简答题】

请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中包含一个源程序文件main.cpp,其中有类Book(“书”)和主函数main的定义。程序中位于每个“//ERROR****found****”下的语句行有错误,请加以改正。改正后程序的输出结果应该是:
书名:C++语句程序设计总页数:299
已把“c++语言程序设计”翻到第50页
已把“c++语言程序设计”翻到第51页
已把“c++语言程序设计”翻到第52页
已把“c++语言程序设计”翻到第51页
已把书合上。
当前页:0
注意:只修改每个“//ERROR ***found***”下的那一行,不要改动程序中的其他内容。
#include
using namespace std;
class Book{
char*title;
int num—pages;//页数
int cur_page;//当前打开页面的页码,0表示书未打开
public:
//ERROR***********found***********
Book(const char*theTitle,int pages)num_pages(pages)
{
title=new char[strlen(theTitle)+1];
strepy(title,theTitle);
cout<<ENDL<<”书名:”<<TITLE
<<”总页数:”<
}
~Book(){delete[]title;}
bool isClosed()const{return cur_page==0;} //书合上时返回true,否则返回false
bool isOpen()const{return!isClosed();}//书打开时返回true,否则返回false
int numOfPages()const{return num_pages;}//返回书的页数
int currentPage()const{return cur_page;}//返回打开页面的页码
//ERROR***********found***********
void openAtPage(int page_no)const{ //把书翻到指定页
cout<
i“page_nohum_pages){
tOUt<<”无法翻到第”<
ClOSe();
}
else{
cur_page=page_n0;
tout<<”已把“"<<TIDE<<"”翻到第"<
}
}
void openAtPrevPage(){openAtPage(cur page—1);{//把书翻到上一页
void openAtNextPage(){openAtPage(cur_page+1);}//把书翻到下一页
void close(){//把书合上
tout<
if(isClosed())
tout<<"书是合上的。";
else{
//ERROR**********found**********
num_pages=0;
cout<<”已把书合上。”;
}
cOut<
}
};
int main(){
Book book(”C++语言程序设计”,299);
book.openAtPage(50);
book.openAtNextPage();
book.openAtNextPage();
book.openA.tPrevPage();
book.close();
tout<<”当前页:”<<BOOK.CURRENTPAGE()<
return 0:
}

参考答案

(1)Book(Const ChAr*thETiFlE,int pAGEs):num_pAGEs(pAGEs)
(2)voiD opEnAtPAGE(int pAGE—no) //把书翻到指定页
(3)Cur_pAGE=0;

相关试题

单选题 由于常对象不能被更新,因此(  )。 查看答案
单选题 下列情况中,不会调用拷贝构造函数的是(  )。 查看答案
单选题 为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。 查看答案
单选题 软件设计中划分模块的一个准则是( )。 查看答案
单选题 有如下程序段:
int i=0,J=1;
nt&r=i;//④ ’ r=j;//②
int * P=&i;//③ * P=&r;//④
其中会产生编译错误的语句是(  )。
查看答案
单选题 下列关于C++预定义流对象的叙述中,正确的是( )。 查看答案
单选题 如下函数模板:
templateT square(T x){return x*x;} 其中T是(  )。
查看答案
单选题 有如下类定义:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是(  )。
查看答案
单选题 有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<’A’;}
Base(char C){cout<<C;}
};
class Derived:public Base{
public:
Derived(char C){tout<<C;}
};
int main(){
Derived dl(’B’);
retum 0;
}
执行这个程序的输出结果是(  )。
查看答案
单选题 执行下列语句段后,输出字符“*”的个数是(  )。
for(int i=50;i>1;--i) Cout<<'*':
查看答案
单选题 支持子程序调用的数据结构是(  )。 查看答案
单选题 已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是( )。 查看答案
单选题 下列数据结构中,能够按照“先进后出”原则存取数据的是( )。 查看答案
单选题 下面的程序中,错误的语句是(  )。
①#inClude
②void main()
③{
④ int *p=new int[1];
⑧P=9;
⑥cout<<.*P<
⑦delete[]p;
⑧}
查看答案
单选题 有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get(){return m;}
int get()const{return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
tout<<A.GET()’<
return U:
}
执行这个程序的输出结果是(  )。
查看答案
单选题 当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。 查看答案
单选题 下面关于运算符重载的描述错误的是( )。 查看答案
单选题 C++中的模板包括(  )。 查看答案
单选题 下列运算符不能重载为友元函数的是( )。 查看答案
单选题 有三个关系R、S和T如下

由关系R和s通过运算得到关系T,则所使用的运算为( )。
查看答案