首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,其中该工程中包含定义了用于表示姓名的抽象类Name、表示“先名后姓”的姓名类Name1(名、姓之间用空格隔开)和表示“先姓后名”的姓名类Name2(姓、名之间用逗号隔开);程序应当
请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,其中该工程中包含定义了用于表示姓名的抽象类Name、表示“先名后姓”的姓名类Name1(名、姓之间用空格隔开)和表示“先姓后名”的姓名类Name2(姓、名之间用逗号隔开);程序应当
admin
2017-07-04
14
问题
请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,其中该工程中包含定义了用于表示姓名的抽象类Name、表示“先名后姓”的姓名类Name1(名、姓之间用空格隔开)和表示“先姓后名”的姓名类Name2(姓、名之间用逗号隔开);程序应当显示:
John Smith
Smith,John
但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:
(1)在“//**1** ****found****”的下方是函数show中的一个语句,它按先名后姓的格式输出姓名。
(2)在“//**2** ****found****”的下方是函数getWord中的一个语句,它把一个字符序列复制到head所指向的字符空间中,复制从start所指向的字符开始,共复制endstart个字符。
(3)在“//**3** ****found****”的下方是函数ereateName中的语句,它根据指针P的值决定返回何种对象:如果P为空,直接返回一个Name1对象,否则直接返回一个Name2对象。注意:返回的Name1或Name2对象必须是动态对象,返回的实际是指向它的指针。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。填写的内容必须在一行中完成,否则评分将产生错误。
//proj3.cpp
#include
using namespace std;
clasS Name{
protected:
char*surname; //姓
char*firstname; //名
public:
一Name(){delete[]surname;delete
[]firstname;)
virtual void show()=0 ;
};
class Name1:publiC Name{
public:
Namel(const char*name);
//**1** **********found**********
void show(){_______;}
};
class Name2:public Name{
public:
Name2(const char*name);
void show()
{ cout << surname <<’,’ <<
firstname;)
};
char*getWord(const char*start,
const char*end)
{
char*head=new char[end—start+
1];
//**2** **********found**********
for(int i=0;i
+)______;
head[end—start]=’\0’;
return head;
}
Name1::Namel(const char*name)
{
char*P=strchr(name,”);
firstname=getWord(name,P);
surname=new char[strlen(p)];
strcpy(surname,P+1);
}
Name2::Name2(const char*name)
{
char*P=strchr(name,’,’);
surname=getWord(name,P);
firstname=new char[strlen(p)];
strcpy(firstname,P+1);
}
Name*createName(const char*S)
{
char*P=strchr(s,’,’);
//**3** **********found**********
if(P)_________;
}
int main()
{
Name*n;
n=createName(”John Smith”);
n->show();cout<
delete n;
n=createName(”Smith,John”);
n->show();cout<
delete n;
return 0;
}
选项
答案
(1)cout<
解析
(1)主要考查考生对成员函数的掌握,题目要求按先名后姓的格式输出姓名,因此输出语句的顺序应该是先输出firstname,然后再输出sunname,注意它们之间还要输出—个空格。
(2)主要考查考生对字符串复制的掌握,题目要求把一个字符序列复制到head所指向的字符空间中,复制从start所指向的字符开始,共复制end—start个字符。程序已经把for循环语句写好了,此处只要把复制语句完成即可,即head
=start
。
(3)主要考查考生对动态分配的掌握,题目要求对象必须是动态对象,因此使用new来分配空间,建立动态对象:if(p)return new Name2(s);else retum HeW Namel(s);。
转载请注明原文地址:https://kaotiyun.com/show/jLAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有以下程序 main() { int i=1,j=1,k=2; if((j++||k++)&& i++) cout<<i<<","<<j<<","<<k<<endl; } 执行后输出结果是
两个或两个以上模块之间联系的紧密程度称为( )。
设有如下定义 struct ss { char name[10]; int age; char sex; }std[3], * p=std; 下面各输入语句中错误的是
如果定义了一个类myclass,则为myclass类对象以成员函数形式重载后++运算符的声明应该为( )。
下面关于对象概念的描述中错误的是()。
下列运算符中,要求运算对象必须是整数的是( )。
首先访问该结点,然后访问结点的左子树,最后访问结点的右子树,这种遍历方式称为( )。
如下类定义中包含了构造函数和拷贝构造函数的原型声明,请在横线处填写正确的内容,使拷贝构造函数的声明完整。classmyClass{private:intdata;public:myClass(in
重新定义标识符的作用域规定是外层变量被隐藏,______变量是可见的。
随机试题
A.局麻药B.麻醉性镇痛药C.类固醇D.神经破坏性药物E.抗癫痫药物治疗三叉神经痛的药物是
对流行性腮腺炎的护理,以下正确的是
首剂应用较大剂量青霉素治疗钩体病,能出现下列哪种反应
洗胃时每次注入的洗胃液的量常为
如图所示,理想变压器的副线圈上通过输电线接两个相同的灯泡L1和L1,输电线的等效电阻为R,开始时开关S断开,当S接通时,以下说法错误的是()。
下列项目中,在计算联合试运转费时需要考虑的费用包括()。
A公司于2010年1月10日与B公司签订一份标的额为100万元的买卖合同,合同约定采用商业汇票结算方式。2月1日,A公司按照合同约定发出货物,B公司于2月10日签发一张见票后1个月付款的银行承兑汇票。3月5日A公司向C银行提示承兑并于当日获得承兑。3月10
引起并决定教育发展变化的最根本、最内在的因素是()。
Aswehaveseen,thereisnothingaboutlanguageassuchthatmakeslinguisticidentitycoextensivewithnationalidentity."If
A、Gettingchildrentopaintonthewallofbuildings.B、Gettingschoolchildrenintheareatowriteastory.C、Gettinganartis
最新回复
(
0
)