首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数
admin
2020-10-21
32
问题
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数据,此情况下程序的输出应该是:
This is a stnng
gnirts a si sihT
注意:只需在函数reverse的//**********333**********和//**********666**********之间填入若干语句,不要改动程序中的其他内容。
//MyString.h
#include
using namespace std;
char * dup(eonst char*);
class MyString{
char*str;
public:
MyString(const char*s=""):str(dup(s)){}
MyString(eonst MyString&m):str(dup(m.str)){}
~MyString(){delete[]str;}
void reverse();
void show(ostream&os=cout)eonst{os<
};
inline ostream&operator<<(ostream&os,const MyString&m){
m.show(os);
return os;
}
void writeToFile(const char*path);
//MyString.cpp
#include"MyString.h"
char*dup(const char*s){
char*p=new char[strlen(s)+1];
strcpy(p,s);
return p;
}
void MyString::reverse(){
//**********333**********
//**********666**********
}
void writeToFile(const char*path);
//writetoFile.cpp
#include
#include"MyString.h"
void writeToFile(const char*path){
char full[50];
strcpy(full,path);
strcat(full,"out.dat");
ofstream outfile(fun);
if(outfile.fail()){eelT<<"打开输出文件失败!";return;}
MyString ml="This is another string":
MyString m2("字符串反转演示");
outfile<
m1.reverse();m2.reverse();
outfile<
outfile.close();
}
选项
答案
Void MyString::reverse() { int i,j; char ch: int len=strlen(str); for(i=0,j=len-1;i
解析
程序定义了MyString类,它包含一个成员:str字符指针;默认构造函数和复制构造函数通过dup()函数,动态分配地址p,将参数拷贝到p指向的内存空间,再使用p初始化str;show()成员函数将str指向的字符串输出;reverse()成员函数将str指向的字符串反转;重载的<<运算符函数调用形参m对象的show()函数输出str指向的字符串。
main()函数首先构造一个MyStrig类对象m1,构造过程中传入字符串“This is a string”,所以m1对象中的str指向一个动态分配的内存空间,该段内存存放拷贝的字符串“This is a string”,输出m1后,再调用m1.reverse()函数,将str指向的字符串进行反转,再输出m1,题意要求我们完成reverse()成员函数的定义,完成反转字符串的功能。
由题意,我们仅有的信息就是str指向一个字符串,它是char*类型,需要对str指向的字符串进行反转,需要获得字符串的长度,然后将首尾字符进行交换,直到交换到中间字符串为止,所以我们定义两个变量i、j,表示元素下标,分别从首(i=0)和尾(长度一1)向中间遍历该字符串,每次遍历,首先判断i是否小于j,若i小于j则将i和j下标对应的字符进行交换,交换完成后i自增l,j自减1,直到i不小于j为止。
转载请注明原文地址:https://kaotiyun.com/show/bgyp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程包含一个源程序文件proj1.cpp。文件重将表示数组元素个数的常量Size定义为4,并用int类型对类模板进行了实例化。文件中位于每个注释“//ERROR****found*
请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,该工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句有错误。请改正这些错误,使程序的输出结果为:123
请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.epp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Con
下列关于类和对象的叙述中,错误的是()。
在数据流图中,带有箭头的线段表示的是()。
下列关于线性表的叙述中,不正确的是()。
使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为:Hello注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//*******
下列符号中可以用作C++标识符的是()。
在软件生命周期中,能准确确定软件系统必须做什么和必须具备哪些功能的阶段是()。
有如下语句序列:ifstreaminfile("DATA.DAT");if(infile.good())cout<<"A";else{COUt<<"B";ofstreamoutfile("DATA.DA
随机试题
在肺癌中,最常见病理组织学类型是
下列药物不属于清热燥湿药的是
功专健脾和胃的药是()
导致月经紊乱的因素有()
某个人独资企业的投资人甲聘用乙作为企业经理,下列所述乙的哪些行为是法律禁止的?()
下列()项不能用作电动湿度传感器。
陈先生夫妇今年均已40岁,家里存款在50万元左右。他和妻子两个人每月收入大约1万元,月花费近4000元。陈先生和妻子计划在10年后退休,假设他们退休后再生存30年,且他们每年花费18万元(注:这笔钱在每年年初拿出),减掉基本养老保险和保险公司给予的保险金
阅读以下文字。完成下列题。唐代诗人张祜《题杭州孤山寺》中有“断桥荒藓合,空院落花深”的诗句,这被视为今日西湖十景之“断桥”的最早文献记录。断桥在南宋咸淳年间因隶属宝祐坊而改称宝祐桥。因“断桥”不断,当时也出现了用谐音“段桥”解释为“段家
著名学者齐美尔认为,由于允许冲突的存在,结构松散群体和开放社会会对那种危及基本意见一致的冲突形成保护层,从而把产生有损核心价值观念的分歧的危险减少到最低程度,对立群体的互相依赖和这种社会内部冲突的交叉,有助于通过互相抵消而把“社会体系缝合起来”,这样就阻止
Whydoesthestudentgotoseehisprofessor?
最新回复
(
0
)