首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi1.cpp,请修改程序中的错误,使程序能得出正确的结果: num:0 num:1 num:10 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******eror******
使用VC6打开考生文件夹下的源程序文件modi1.cpp,请修改程序中的错误,使程序能得出正确的结果: num:0 num:1 num:10 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******eror******
admin
2019-05-14
54
问题
使用VC6打开考生文件夹下的源程序文件modi1.cpp,请修改程序中的错误,使程序能得出正确的结果:
num:0
num:1
num:10
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******eror******的下面。
#include<iostream.h>
int i=10;
class TestClasS
{
public:
TestClasS(int i)
{
cout<<"num:"<<i<<endl;
//********error********
i=i+1;
}
void Print()const
(
cout<<"num:"<<i<<endl;
}
private:
int i;
};
void main()
{
//********error*******
TestClass print;
int i(0);
print.Print();
//********error********
cout<<"num:"<<i<<endl;
return;
}
选项
答案
(1)this->i=i+1;或TestClass::i=i+1:或(*this).i=i+1; (2)TestClass print(0); (3)cout<<"num:"<<::i<<endl;
解析
(1)打开modi1,cpp,调试程序,显示错误提示为第二标识下“modi1.cpp(22):error C2512:’TestClass’:no appropriate default constiuctor available”,主函数中首先调用的就是第2个标识下的TestClass print函数,构造函数的名字和类的名字是一样的,而程序中给出的“TestClass print;”没有给出参数,所以程序调试时无法确定调用的函数。根据TestClass构造函数“TestClass(int i)”的定义,应该存在int型参数,并且题目要求第一次输出的值为“0”,所以第2个标识正确的调用函数为“TestClass print(0);”。
(2)运行,发现第一次的输出正确,但是第二次的输出值为“-858993460”,并不是题目中要求的“1”。在主函数中,可知第二次输出调用的是“print.Print();”,即类TestClass的成员函数“Print()”。成员函数Print的定义“voidPrint()const”中的输出语句为“cout<<"num:"<<i<<endl;”,而第二次的输出值为“-858993460”说明“i”的赋值错误。第1个标识下的“i=i+1;”语句是获得num的值为“1”,因为“i”还存在着“int i=10;”的定义,这里应该是调用成员函数自身的值,而不是上面的“int i=10;”,所以修改为“this->i=i+1;”或“TestClass::i=i+1;”或“(*this).i=i+1;”。
(3)主函数中通过“cout<<"num:"<<i<<endl:”语句实现第三次输出,第三次的输出值为“0”,并不是题目中要求的“10”。程序中存在“int i=10;”定义,这里应该是调用“int i=10;”中的“i”值。通过域定义符引用这个“i”,所以修改为“cout<<"num:"<<::i<<endl:”。
转载请注明原文地址:https://kaotiyun.com/show/ZE8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列情况中,不会调用拷贝构造函数的是()。
在下面的类定义中,横线处应填入的内容是()。classFred{public:voidprint(){cout<<data<<end1;}voidsetData(doubled}{data
以下程序的执行结果为()。#include<iostream.h>classSample{intn;public:Sample(inti){n=i;}operator++(){n++;}
设有以下定义和程序:#include<iostream.h>classTestClass1{public:voidshow1(){cout<<"TestClass1"<<end1;}
下面关于构造函数和析构函数的描述,错误的是()。
若有如下程序段:#include<iostream>usingnamespacestd;intmain(){char*p="abcdefgh",*r;r=p;cout<<*r<<end1;
设有关键码序列(66,13,51,76,8l,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为()。
______是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。
随机试题
人们对社会生活中各种事物的态度和看法就是()
心源性水肿的开始部位是
患者,女性,54岁。心悸2小时来院急诊。查体:心率125/分,脉率105/分,心脏听诊心音强弱及快慢不等。考虑是
某厂商出售光盘时宣称:所有光盘一经售出,概不负责。厂商所做上述声明的做法属于什么行为?
成本管理应以企业业务模式为基础,将成本管理嵌入业务的各领域、各层次、各环节,实现成本管理责任到人、控制到位、考核严格、目标落实。这些要求是遵循了成本管理的()原则。
甲公司注册资本总额为500万元,后来收到乙公司投入的现金120万元,在原注册资本中占20%的份额,甲公司进行账务处理时,可能涉及的账户有()。
规模经济是指由于生产专业化水平的提高等,使企业的单位成本下降,从而形成企业的长期平均成本随着产量的增加而递减的经济;范围经济是指由企业通过扩大经营范围,增加产品种类,生产两种或两种以上产品而引起单位成本降低的经济。根据上述定义,下列选项中不属于范
甲公司分期支付乙公司货款,可用于甲公司向乙公司提供担保的财产有()。
Whowillspeakupforinternationalcapitalism?Governmentsandbusinesses.Whatapitythatis!Thesesupposeddefendersofglo
“那么,过一会爸爸趴在床上当马,让你骑上玩打仗,好不好?”
最新回复
(
0
)