二、程序改错题
(1)“i=i+9;”应改为“this->i=i+9;(*this).i=i+_9;或TC::i=i+9;”。
(2)“TCobj;”应改为“TCobj(1);”。
(3)“cout<<"member:"< 【解析】本题考查了考生对变量作用域的了解情况。i=i+9;语句使形参的值自增9,这样做是毫无意义的,因为形参变量值在函数结束后不会被保存。所以等号左边的变量i应引用为TC的私有成员变量,将私有成员初始化为形参i+9的值,可以通过this指针来引用,也可以通过域作用符“::”。“TCobj;”语句会产生一条编译错误,因为TC类已经定义了一条TC(inti)构造函数,C++就不会为其自动生成默认构造函数了。这就意味着,要创建TC类的对象必须带有一个int型构造函数参数。该构造函数中的第1条就是输出语句。从输出了形参i的内容来看,这个构造参数应该为1。“cout<<"member:"< 三、简单应用题
imfun(char*data)
{
intMaxPos=0:
if(data==NULL
return-l:
charMaxData=data[0];
if(MaxData==0)
return-1;
for(inti=1;data[i]!=0;i++)
if(data[i]>=MaxData)
{
MaxData=data[i];
MaxPos=i:
}
returnMaxPos;
}
【解析】本题考查的是查找最大值算法。根据题意,首先检查传入参数的合法性,如不合法或为空串,则返回-1,然后通过for循环遍历整个字符串,将最大值字符保存到MaxData内,并将最大位置保存给MaxPos,最后返回Max-Pos。
四、综合应用题
(1)“TC(inti,intj)”应改为“TC(inti,intj):Num2(j)”。
(2)应添加“friendvoidfun();”。
(3)应添加“intTC::Num3=0;”。
(4)“obj.Add();”应改为“0bj.Add(5);”。
【解析】本题考查了构造函数初始化列表、声明友元函数、初始化静态成员变量。第1处应该添加初始化Num2成员的语句,由于该成员为常成员,所以只能通过初始化列表初始化。第2处应添加将fun函数声明为TC类友元的语句。静态成员变量需要在类外初始化,就像定义类的成员函数一样。可以将静态成员变量看成全局变量。Add函数需要一个int型参数,从Add函数的定义来看,它将增加形参i的值。由于main函数中先调用了一次Print成员函数,已经输出了3行数据,然后再调用fun函数的,所以fun函数中调用Print是输出后3行数据。Num3在第1次输出时值为10,fun函数中创建obj对象时,又让其增加1,而希望它最终的值是16,所以不难得知,Add()中应传入5才能达到目的。
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 |