首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,
admin
2019-01-19
51
问题
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
10
6
30
2
2
注意:错误的语句在//******error******的下面,修改该语句即可。
1 #include<iostream.h>
2 class CMyClass
3 {
4 private:
5 int number;
6 int Add(int i)
7 {
8 return number+=i;
9 }
10 int Sub(int i)
11 {
12 return number-=i;
13 }
14 int Mul(int i)
15 {
16 return number*=i;
17 }
18 int Div(int i)
19 {
20 if(i!=0)
21 {
22 return number/=i;
23 }
24 else
25 return number;
26 }
27 //******error******
28 typedef int(FUNC)(int);
29 //******error******
30 FUNC func[];
31 public:
32 CMyClass()
33 {
34 func[0]=CMyClass::Add;
35 func[1]=CMyClass::Sub;
36 func[2]=CMyClass::Mul;
37 func[3]=CMyClass::Div;
38 number=0;
39 }
40 int CallFunction(int i,int j)
41 {
42 //******error******
43 return(func
)(j);
44 }
45 };
46 void main()
47 {
48 CMyClass myobj;
49 cout<<myobj.CallFunction(0,10)<<end1;
50 cout<<myobj.CallFunction(1,4)<<end1;
51 cout<<myobj.CallFunction(2,5)<<end1;
52 cout<<myobj.CallFunction(3,15)<<end1;
53 cout<<myobj.CallFunction(3,0)<<end1;
54 }
选项
答案
(1)typedef int(CMyClass::*FUNC)(int); (2)FUNC func[4]; (3)return (this->*func[i])(j);
解析
CMyClass类有一个成员变量number,多个成员函数分别实现加减乘除功能。使用typedef定义了一个返回值是整型并带有一个整型参数的函数指针,并通过实例化一个容量为4的函数指针数组实现对类中定义的方法的调用。
(1)在类中定义函数指针须指定类名及指针定义运算符木,因此第1个标识下函数指针正确的定义为“typedefint(CMyClass::*FUNC)(int);”。
(2)函数指针数组本身是数组类型,因此在定义时如果没有初始化,就必须指定数组大小,在本题中因为指针数组包含的指针变量需要指向四种算数运算,因此定义指针数组大小为4,即第2个标识下应改为“FUNC func[4];”。
(3)func是指针数组,因此访问的时候需要有指针运算符“*”,第3个标识下应改成“return(this->*func
)(j);”。
转载请注明原文地址:https://kaotiyun.com/show/SgAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下程序:#include<iostream.h>usingnamespacestd;ClassBase{public:Base(){cout<<“BB”;f();}void{(){cout<
下列程序的执行结果是()。#include<iostream.h>classSample{intx,y;public:Sample(){x=y=0;)Sample(inta,intb)
下面说法正确的是()。
与所使用的计算机无关的是数据的
下列程序编译错误,是由于划线处缺少某个语句,该语句是______。#include<iostream.h>classA{private:intnuml;public:A():nu
在C++语言程序中,对象之间的相互通信通过
下列程序编译时发现pb->f(10);语句出现错误,其原因是______。#include<iostream.h>classBase{public:voidf(intx){cout<<"Base:"<<
在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为______。
已知类A中有公用数据成员B*b;其中B为类名。则下列语句错误的是
以下程序的功能是按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出:main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){
随机试题
惩罚那些不符合组织目标的行为,以使这些行为削弱甚至消失,从而保证组织目标的实现不受干扰。这指的是____________。
A.肉芽肿B.肉芽组织C.实质样变D.肉瘤E.肉眼观脏器表面有凹陷性瘢痕
男,42岁。1月初发病,头痛、发热、恶心、呕吐,腰痛5天。查体:面色潮红,结膜充血,腋下可见抓痕状出血点。实验室检查:白细胞20×109/L,中性粒细胞72%,淋巴细胞20%,异型淋巴细胞8%,尿蛋白(++)。该患者应首先考虑的诊断是
某工程,在招标过程中,发生如下事件。事件1:招标文件中规定,投标单位在收到招标文件后,若有问题需要澄清,只能以书面形式提出,招标单位将答复只可以书面形式送给提出问题的投标单位。事件2:招标文件中规定,从招标文件发放之日起,在15日内递交投标文件。事件
企业的流动资产包括存货、库存现金、应收账款和( )等。
设备维护是为了保持设备处于良好工作状态,延长使用寿命所进行的日常工作,主要分为()。
【2015年云南玉溪/2013年福建】教材编写、教学、评估和考试的依据是()。
我国多数企业完全缺乏“专利意识”,不懂得通过专利来保护自己的合法利益。中国专利局最近对500家大中型企业专利工作的一次调查结果表明,在科研或新产品规划时制订了专利计划的仅有26%。以下哪项,如果为真,最能削弱上述论证?()
Theemployertriedtobullyhisemployeesfromstagingstrikesbythreateningtoclosedowntheentireplant.
Mathematicalabilityandmusicalabilitymaynotseemonthesurfacetobeconnected,butpeoplewhohaveresearchedthesubject
最新回复
(
0
)