问答题

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

【参考答案】

(1)title=new char[strlen(theTitle)+1]; (2)bool isOpen()const......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2。此工程中包含一个源程序文件main.cpp,其中有类AutoMobile(“汽车”)及其派生类Car(“小轿车”)、Truck(“卡车”)的定义,以及主函数main的定义。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:车牌号:冀ABC1234 品牌:ForLand 类别:卡车 当前档位:0 最大载重量:12车牌号:冀ABC1234 品牌:ForLand 类别:卡车 当前档位:2 最大载重量:12车牌号:沪XYZ5678 品牌:QQ 类别:小轿车 当前档位:0 座位数:5车牌号:沪XYZ5678 品牌:QQ 类别:小轿车 当前档位:-1 座位数:5注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“ ****found****”。#include <iostream>#include <iomanip>#include <cmath>using namespace std;class AutoMobile{ 汽车 类char * brand; 汽车品牌char * number; 车牌号int speed; 档位:1、2、3、4、5,空档:0,倒档:-1public:AutoMobile(const char * the_brand, const char * the_number): speed(0){ ********** found**********______;strcpy(brand, the_brand);number = new char[strlen (the_number) +1]; ********** found**********______;}~AutoMobile () { delete[] brand; delete[] number; }const char * theBrand() const{ return brand; } 返回品牌名称const char * theNumber()const{ return number; } 返回车牌号int currentSpeed () const { return speed; } 返回当前档位void changeGearTo (int the_speed) { 换到指定档位if (speed>= -1 && speed<=5)speed=the_speed;}virtual const char * category () const =0; 类别:卡车、小轿车乖virtual void show()const{cout << 车牌号: << theNumber()<< 品牌: <<theBrand() ********** found**********<< 类别: <<<< 当前档位: << currentSpeed();}};class Car: public AutoMobile{ 小汽车 类int seats; 座位数public:Car (const char * the_brand, const char * the_number, int the_seats): AutoMobile(the_brand, the_number), seats(the_seats){}int numberOfSeat () const { return seats; } 返回座位数const char * category()const{ return 小轿车 ; } 返回汽车类别void show () const {AutoMobile::show ();cout << 座位数: << numberOfSeat () << endl;}};class Truck: public AutoMobile{ “卡车”类int max load; 最大载重量public:Truck (const char * the _brand, const char * the_number, int the_max_load): AutoMobile (the_brand, the_number), maxload (the_maxload) {}int maxLoad () const{ return max load; } 返回最大载重量const char * category()const{ return 卡车 ; } 返回汽车类别void show () const { 调用基类的show()函数 ********** found**********______cout << 最大载重量: << maxmoad () << endl;}};int main () {Truck truck ( ForLand , 冀ABC1234 , 12);truck.show ();truck.changeGearTo (2);truck.show ();Car car ( QQ , 沪XYZ5678 , 5);car.show ();car.changeGearTo (-1);car.show ();cout << endl;return 0;}