首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。 【说明】 字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字 符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类edlt_string,派生
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。 【说明】 字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字 符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类edlt_string,派生
admin
2010-01-15
51
问题
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
【说明】
字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字 符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类edlt_string,派生于string,在其中设置一个光标,使其能支持在光标处的插入、删除操作。
【程序】
#include <iostream.h>
#include <stdio.h>
#include <string.h>
class string
{
int length;
char *data;
public:
int get_length() {return length;}
char *get_data() {return data;}
~string() {delete data;}
int set data(int in_length, char *in_data);
int set_data(char *data);
void print() {cout<<data<<endl;}
};
class edit_string: public string
{
int cursor;
public:
int get_cursor() {return cursor;}
void move_cursor(int dis) {cursor=dis;}
int add_data(string *new_data);
void delete_data(int num);
};
int string::set_data(int in_length,char *in_data)
{
length=in_length;
if(!data)
delete data;
(1)
strcpy(data,in_data);
return length;
}
int string::set data(char *in_data)
{
(2)
if(!data)
delete data;
(1)
strcpy(data,in_data);
return length;
}
int edit_string::add_data(string *new_data)
{
int n,k,m;
char *cp,*pt;
n=new_data->get_length();
pt=new_data->get_data();
cp=this->get_data();
m=this->get_length();
char *news=new char[n+m+1];
for(int i=0; i<cursor; i++)
news
=cp
;
k=i;
for(int j=0; j<n; i++,j++)
news
=pt[j];
cursor=i;
for(j=k; j<m; j++,i++)
(3)
news
=’\0’;
(4)
delete news;
return cursor;
}
void edit string::delete_data( int num)
{
int m;
char *cp;
cp=this->get_data();
m=this->get_length();
for(int i=cursor; i<m; i++)
(5)
cp
=’\0’;
}
选项
答案
(1)data=new char[length+1]; (2)length=strlen(in_data); (3)news[i]=cp[j]; (4)set_data(news); (5)cp[i]=cp[i+num];
解析
本题考查C++中字符串的操作。
字符是程序设计中常用的一种数据类型,而字符串表示一串字符,在程序设计中扮演着重要角色,是考试中常出现的内容。题目要求设计一个基类能实现字符串设置、返回字符串长度及内容等功能,设计一个子类能支持在光标处的插入、删除操作。
下面我们来看代码。首先定义了一个string基类,在string基类中,声明了两个成员变量和几个成员函数。接着定义了一个继承string类的派生类edit_string。再下面是对类中成员函数的实现。
第(1)空在set_data()函数体中,int string::set_data()表明此函数是基类中的成员函数,根据基类要实现的功能,此函数要实现返回字符串长度和设置其内容,在函数体中其长度已经给出,但分配存储空间被delete data删除掉了,应该重新分配,在C++中一般用关键字new实现空间的动态分配。因此,第(1)空的答案是data=new char[length+1]。
第(2)空在另一个set_data()函数体中,这两个函数同名,但参数不同,这是C++
中用同名函数实现多态的技巧。此函数功能同上一个函数,但它的形参中没有指明字符串的长度,因此,在函数开始时要求出字符串的长度,用函数strlen()。所以,此空答案为length=strlen(in_data)。
第(3)空和第(4)空在函数add_data()中,此函数是派生类中的成员函数,根据题目要求它要实现的功能是在光标处进行插入。在此函数体中重新分配了一块内存空间,其长度是原有字符串长度和要插入字符串长度之和加1,用来存放这两个字符串。第(3)空所在的位置是循环体下面,根据循环体的判断条件i<m我们可以想到这是要对长度为m的字符串进行插入。因此,此空答案为news
=cp[j]。而第(4)空是在完成了插入工作以后,根据程序上下文推断,应该是计算字符长度并返回,因此,答案为 Set_data(news)。
第(5)空在函数delete_data()中,根据题目要求,此函数应该是实现子类在光标处进行删除的功能。删除一般采用覆盖技术,即将后面的字符往前移动来覆盖掉要删除的字符,第(5)空实现的就是这个功能,要删除num个字符,后面的字符应该往前移动 num,因此,此空答案为cp
=cp[i+num]。
转载请注明原文地址:https://kaotiyun.com/show/6BjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
小王在Excel中录入某企业各部门的生产经营数据,录入完成后发现报表略超一页,为在一页中完整打印,以下______做法正确。
某村领导要求信息处理技术员估计该村一池塘中的鱼的大致数量。该技术员想出了一个办法:先从池塘中捕出30条鱼,在每条鱼身上做一记号后,又放回池塘。几天后,再从该池塘中捕出40条鱼,发现其中有2条是有记号的。因此,他估计该池塘鱼的数量大致为(68)条(假设这几天
假设在Access中已经建立了“学生”表,表中包括“学号”、“姓名”、“性别”和“班级”等字段,如果要统计出每个班级的人数,那么在查询设计视图的“班级”的“总计”行和“学号”的“总计”行中应分别选择(65)。
在Excel2007中,在单元格A1中输入函数“=LEN(”信息处理技术员”)”,按回车键后,则A1单元格中的值为__________。
为在复写纸上打印三联单,宜用________打印机。
在Excel2003中,A1到E6单元格的值如下图所示,若在A7单元格中输入计算众数的函数“=MODE(A1:E6)”,按回车键后,则.A7单元格显示的值为(47)。
______不属于企业信息系统存在的问题。
打开DOC文档48.doc,有如下表格,欲在空白单元格中计算出整行其他四个单元格的数值之和,应在空白单元格中插入公式(48)。
许多书上都说,人一次只能记住或处理5~9(7±2)条信息。为了检验这个结论是否正确,宜采用()调查方法。经过多次调查统计研究发现,人一次平均只能记住或处理4条信息。经考证,原来7±2的说法只是一位专家在一个讲演稿中的估计,并不是真正的调研报告,但却
在Excel中,为标识一个由单元格B3、B4、C3、C4、D4、D5、D6、D7组成的区域,下列选项中,正确的是______。
随机试题
实际分娩的日期与推算的预产期可以相差()
中国的改革是全面的改革,又是有重点的改革。改革的重点是()。
确诊白血病的实验室检查是
下列病情转归中哪些是正确的
营养性巨幼红细胞性贫血的患儿出现精神、神经症状的治疗应是
主产于华北、西北、东北地区,气微香,味涩微苦主产于宁夏、甘肃及青海等
当正在运行的应用程序最小化后,它将缩为屏幕下方的一个图标,此时程序处于()。
下列属于清明节时期的习俗有()。
一般来说,小小说是短篇小说的简化,但这并不意味着小小说就没有特殊的规定性和独立存在的依据。它简化了短篇小说的某些艺术手法,又突出了某些艺术手段,如明晰的故事线索等。同时,因为篇幅短小,它很难藏拙,比较容易趋于精致,即使作品水平不高,对读者时间的浪费也有限,
WhichofthefollowingisCORRECT?
最新回复
(
0
)