问题 填空题

使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,其输出的结果为
30
130
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include<iostream.h>
int a=10;
class TC

public:
TC()

a=b=0;

void display()

//******error******
cout<<a<<b<<end1;

void func(int a)

//******error******
a+=a;

void func2()

//******error******
a+=a;

private:
int a,b;

void main()

TC obj;
obj.func(3);
obj.display();
obj.func2();
obj.display();

答案

参考答案:应改为“a+=::a;”。

解析: 成员函数display打印变量a和b的值,即cout输出a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,第1处的语句应改成“cout<<a<<b<<end1。在func(int a)中,参数a传递进来,其和成员变量a的名称一样,因此第2处的“a+=a”有歧义,从程序的运行结果来分析,TC obj声明对象obj,初始化类成员变量a和b均为0,调用func函数后输出30,说明a为3,b为0,因此这里应该是成员变量与参数a的和赋给成员变量a,正确的写法是“this—>a+=a;”。func2函数虽然没有参数,但成员变量a和全局变量a重名,第3处的“a+=a”也会有歧义,分不清楚是全局变量加倍还是类成员变量加倍或者其他情况,调用func2函数后,输出“130”,说明a为13,b为0,因此是成员变量与全局变量a的和赋给成员变量a,正确的写法是“a+=::a;”,“::a”表示是全局变量a。

多项选择题
单项选择题