首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,
admin
2019-01-19
67
问题
使用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://www.kaotiyun.com/show/SgAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下面不正确的描述为
C++程序是从______函数开始执行的。
对下列二叉树进行中序遍历的结果是()。
假定有下列变量定义:intk=7,x=12;则能使值为0的表达式是
将6个数据进行冒泡排序,在最坏情况下需要比较的次数是
下列程序的运行结果为#include<iostream.h>template<classTT>classFF{TTa1,a2,a3;public:FF(TTb1,TTb2,TTb3){a1
下面关于C++语言变量的叙述错误的是
线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是
下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在下画线处应填入的选项是#include<iostream.h>voidmain(){inta,b,t;cin>>a
两个或两个以上模块之间联系的紧密程度称为()。
随机试题
临床上关于保守治疗尿路结石适应证叙述不正确的是( )。
关于建设用地的申请和审批,下列说法哪些是不正确的?()
影响铁路运输安全的人员因素中,铁路运输系统外人员主要包括()。
仲裁裁决的撤销应在收到裁决书之日起( )内提出。
作为单身母亲的余女士已离婚成为单身母亲,面对生涯规划,需要金融理财师协助规划。经过初步沟通面谈后,你获得了以下家庭、职业与财务信息:一、案例成员二、家庭收支状况1.收入方面(1)余菲菲女士,每年经营收入扣除铺租、水电、管理费、人工、税金等各项成本
持站台票上车并在开车后()分钟后仍不声明的,按无票处理。
甲获得的下列费用中,需要缴纳个人所得税的是()。
求极限:.
Economicglobalizationobviouslyhasagreatdealtodowiththechangeofprolongedworkinghours.Ithasleveledtheplayingf
TheOlympicGamesareheldeveryfouryears,eachtimeinadifferentcity.TheGamesbeginwhenarunner,carryingalightedto
最新回复
(
0
)