请打开考生文件夹下的解决方案文件proj1,该工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句有错误。请改正这些错误,使程序的输出结果为:
注意:只能修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。
1 //proj1.cpp
2 #include<iostream>
3 using namespace std;
4
5 class Myclass{
6 public:
7 Myclass(int len)
8 {
9 array=new int[len];
10 arraySize=len;
11 for(int i=0;i<arraySize;i++)
12 array[i]=i+1;
13 }
14
15 ~Myclass()
16 {
17 //ERROR ********found********
18 delete array[i];
19 }
20
21 void Print()const
22 {
23 for(int i=0 ; i<arraySize ; i++)
24 //ERROR ********found********
25 cin<<array[i]<<";
26
27 cout<<endl ;
28 }
29 private:
30 int*array:
3l int arraySize;
32 };
33 int main()
34 {
35 //ERROR ********found********
36 MyClass obj;
37 obj.Print();
38 return 0 ;
39 }
【正确答案】1 delete[]array;
2 cout<<array[i]<<'';
3 MyClass obj(10);
【答案解析】(1)语法错误,使用delete语句删除…个指针时,直接把指针变量的名称放在defete []后面即可。
(2)芬查考生对输入、输出语句的运用。使用cout进行数据输出操作,一般格式为:cout<<Expr;。其中,Expr代表一个表达式,“<<”称为插人运算符,该语句的含义是,将表达式Expr的值输出到屏幕上。使用cin进行数据输入操作,一般格式为:cin>>var;。其中,vat代表一个变量,“>>”称为提取运算符,该语句的含义是,将用户输入的数据保存到var中。
(3)考查语句的初始化,我们来看MyClass类的构造函数:
1 MyClass(int 1811)
2 {
3 array=new int[len];
//给数组动态分配空间,大小为1813
4 arraysize=len; //赋值
5 for(int i=0 ; i<arrayS一
6 ize;i++)
array[i]=i+1; //循环
7 给数组赋值,从1到10
请注意:形参len没有定义默认值,因此要想使array动态数组里依次存放1,2,3,4,5,6,7,8,9,10,就是要给len赋值为10。