使用 VC6 打开考生文件夹 proj1 下的工程 proj1, 其中有“沙发” 类 Sofa 和主函数 main 的定义。 程序中位于每个//ERROR**********found**********下的语句行有错误, 请加以更正。更正后程序的输出应该是:
座位数: 3
颜色: 红色
注意: 只能修改每个//ERROR**********found**********下的那一行, 不要改动程序中的其他内容。
#include<iostream>
using namespace std;
class Sofa{ //“沙发” 类
int seats; //座位数
char color[10]; //颜色
public:
//ERROR******found******
Sofa(int s,const char*co)
{
//ERROR******found******
if(co=NULL)
color[0]=´\0´;
else
strcpy(color,co);
}
//ERROR******found******
const char*getSeats()const{return seats;}
const char*getColor()const{return color;}
};
int main(){
Sofa safa(3);
cout<<"座位数:"<<sara.getSeats()<<endl;
cout<<"颜色:"<<sara.getColor()<<endl;
return 0;
}
(1)Sofa(int s,const char*co="红色"):seats(s){
(2)if(co==NULL)
(3)int getSeats() const {return seats;}
本题主要考查的知识点为: 关系运算符和关系表达式、 默认参数和函数返回类型。
程序定义 Sofa 类, 它包含两个数据成员: 字符数组 color 和整型变量 seats;还包含一个构造函数, 两个公有成员函数, getSeats()函数返回成员 seats 的值, getColor()函数返回字符数组 color 的地址Sofa 类的定义体中, 有三个错误:
(1)Sofa 类的构造函数错误: 由 main()函数中定义 Sofa 类对象时可知: 构造函数虽然有两个参数, 但是可以只传入一个整型变量, 所以另一个参数 co 需要提供一个默认值, 由题意可知程序运行结果输出颜色是红色, 所以 co 的默认字符串值为“红色”; 另外程序需要输出座位数: 3, 所以成员 seats 需要使用形参 s 完成初始化, 构造函数体中并未对 seats 进行赋值。
(2)sofa 类的构造函数中, 需要根据形参 co 的值是否为空, 完成 color 的赋值, 此处的 if 判断需要使用相等关系运算符, 而不是赋值运算符。
(3)成员函数 getSeats()返回的是 seats 的值, 所以返回值应该是 int 类型, 而不是 const char*类型。