操作题 1.请打开考生文件夹下的解决方案文件projl,该工程中含有一个源程序文件projl.cpp。其中位于每个注释“//ERROR **** found ****”之后的一行语句有错误。请改正这些错误,使程序的输出结果为:
1 2 3 4 5 6 7 8 9 10
注意:只能修改注释“//ERROR **** found ****”的下一行语句,不要改动程序中的其他内容。
//proj1.cpp
#include<iostream>
using namespace std;

class MyClass {
public:
MyClass(int len)
{
array=new int[len];
arraySize=len;
for(int i=0; i<arraySize; i++)
array[i]=i+1;
}

~MyClass()
{
//ERROR ******** found ********
delete array[i];
}

void Print()const
{
for(int i=0; i<arraySize;i++)
//ERROR ******** found ********
cin<<array[i]<<”;

cout<<endl;
}
private:
int * array;
int arraySize;
};
int main()
{
//ERROR ******** found *******
MyClass obj;
obj.Print();
return 0;
}
【正确答案】1 delete[]array;
2 cout<<array[i]<<";
3 MyClass obj(10);
【答案解析】(1)语法错误,使用delete语句删除一个指针时,直接把指针变量的名称放在delete[]后面即可。
(2)考查考生对输入、输出语句的运用。使用COut进行数据输出操作,一般格式为:cout<<Expr;。其中,Expr代表一个表达式,“<<”称为插入运算符,该语句的含义是,将表达式Expr的值输出到屏幕上。使用cin进行数据输入操作,一般格式为:cin>>var;。其中,var代表一个变量,“>>”称为提取运算符,该语句的含义是,将用户输入的数据保存到var中。
(3)考查语句的初始化,我们来看MyClass类的构造函数:
MyClass(int len)
{
array =new int[len];
//给数组动态分配空间,大小为len
arravsize=len //赋值
for(int i =0; i < arraysize;i++)
array[i]=i+1; //循环给数组赋值,从1到10
请注意:形参len没有定义默认值,因此要想使array动态数组里依次存放1,2,3,4,5,6,7,8,9,10,就是要给len赋值为10。