请使用“答题”菜单或使用VC6打开考生文件夹proj1下的工程proj1。其中在编辑窗口内显示的主程序文件中定义有Xabc类和主函数main。在程序文本中位于每行“//ERROR**********found**********”下面的—行有错误,请加以更

admin2020-06-29  34

问题 请使用“答题”菜单或使用VC6打开考生文件夹proj1下的工程proj1。其中在编辑窗口内显示的主程序文件中定义有Xabc类和主函数main。在程序文本中位于每行“//ERROR**********found**********”下面的—行有错误,请加以更正。更正后程序的运行结果为:s=20
注意:只允许修改每个“//ERROR**********found**********”下面的一行语句,不允许改动程序中的其他任何内容。
#include
usingnamespacestd;
clasSXabc{
int*a;intn;
public:
Xabc(intaa[],intnn){//构造函数
//ERROR**********found**********
nn=n;
//ERROR**********found**********
a=new(n);
for(inti=0;ia=aa
}
intGetA(inti){returna;}
~Xabc(){delete[]a;}
};
voidmain(){
inta[5]={2,3,4,5,6};
Xabcx(a,5);
inti,s=0;
//ERROR**********found**********
for(inti=0;i<=5;i++)
S+=X.a
cout<<"s="<}

选项

答案(1)n=nn; (2)a=newint[n]; (3)for(i=0;i<5;i++)s+=x.GetA(i);

解析 (1)主要考查考生对构造函数的掌握,构造函数应该是使用参数肌对数据成员n赋值。
(2)主要考查考生对动态分配的掌握,在析构函数中,对a使用delete[]释放,所以在构造函数中,需要使用new[]动态分配内存。
(3)主要考查考生对类成员访问权限的掌握,首先for循环中重复定义了变量i;另外数组下标从0开始,i应该小于5;最后对象x不能直接访问私有变量a,应该转化为x通过公有成员函数GetA来访问a。
转载请注明原文地址:https://kaotiyun.com/show/Te8p777K
0

最新回复(0)