操作题   请使用VC6或使用【答题】菜单打开proj1下的工程proj1,该工程中包含程序文件main.cpp,其中有关TVSet(“电视机”)和主函数main的定义。程序中位于每个“// ERROR ********found********”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是:
    规格:29英寸,电源:开,频道:5,音量:18
    规格:29英寸,电源:关,频道:-1,音量:-1
    注意:只修改每个“// ERROR ****found****”下的那一行,不要改动程序中的其他内容。
    #include <iostream>
    using namespace std;
    class TVSet{  //'电视机'类
    const int size;
    int channel;  //频道
    int volume;  //音量
    bool on;  //电源开关:true表示开,false表示关
    public:
    // ERROR *******found*******
    TVSet(int size) {
    this -> size(size);
    channel = 0;
    volume = 15;
    on = false;
    }
    int getSize() const {return size;}  //返回电视机规格
    bool isOn() const {return on;}  //返回电源开关状态
    //返回当前音量,关机情况下返回-1
    int getVolume() const {return isOn()? volume:-1;}
    /返回当前频道,关机情况下返回-1
    int getChannel() const {return isOn()? channel: -1;}
    // ERROR *******found*******
    void turnOnOff() const  //将电源在'开'和'关'之间转换
    {on=! on;}
    void setChannelTo (int chan){  //设置频道(关机情况下无效)
    if (isOn() && chan >= 0 && chan <= 99)
    channel = chan;
    }
    void setVolumeTo (int vol){  //设置音量(关机情况下无效)
    if(isOn() && vol >= 0 && vol <= 30)
    volume = vol;
    }
    void show_state() {
    // ERROR *******found*******
    cout << '规格:' << getSize() << '英寸'
    << ',电源:' << (isOn()? '开':'关')
    << ',频道:' << getChannel() << ',音量:' << getVolume()
    << endl;
    }
    };
    int main() {
    TVSet tv(29);
    tv.turnOnOff();
    tv.setChannelTo(5);
    tv.setVolumeTo(18);
    tv.show_state();
    tv.turnOnOff();
    tv.show_state();
    return 0;
    }
 
【正确答案】(1)TVSet(intsize):size(size) { (2)void turnOnOff() (3)cout << '规格:' << getSize() << '英寸' 答案考生文件夹
【答案解析】[考点] 主要考查TVSet类,其中涉及构造函数、const函数和bool型函数。TVSet类的私有成员中有个常变量const int size,这种变量只能使用成员列表初始化来赋值,判断一个函数是否为const函数,就要看函数体内是否有成员变量的值发生了改变。 (1)主要考查考生对构造函数的掌握,因为size是常变量,所以只能用成员初始化列表来初始size,即TVSet(int size):size(size) {。 (2)主要考查考生对const函数的掌握,在turnOnOff函数中,有语句:on=!on;,使得on的值发生改变,因此该函数不能使用const。 (3)主要考查考生对输出语句的掌握,下一条语句:<<',电源:'<< (isOn()?'开':'关'),说明输出语句还没结束,因此不能用“;”。