首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数
admin
2017-07-28
74
问题
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数据,此情况下程序的输出应该是:
This is a string
gnirts a si sihT
注意:只需在函数reverse的//**********333**********和//**********666**********之间填入若干语句,不要改动程序中的其他内容。
//MyString.h
#include<iostream>
using namespace std;
char*dup(const char*);
class MyString{
char*str:
public:
MyString(const char*s=" "):str(dup(s)){}
MyString(const MyString&m):str(dup(m.str)){}
~MyString(){delete[]str;}
void reverse();
void show(ostream &os=cout)const{os<<str<<endl;}
};
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(constchar*s){
char*p=new char[stden(s)+1];
strcpy(p,s);
return p;
}
void MyString::reverse(){
//**********333**********
//**********666**********
}
void writeToFile(const char*path);
//writetoFile.cpp
#include<fstream>
#include"MyString.h"
void writeToFile(const char*path){
char full[50];
strcpy(full,path);
strcat(full,"out.dat");
ofstream outfile(full);
if(outfile.fail()){CelT<<"打开输出文件失败!";return;}
MyString m1="This is another string":
MyString m2("字符串反转演示");
outfile<<m1<<m2;
m1.reverse();m2.reverse();
ouffile<<m1<<m2:
outfile.close();
}
选项
答案
void MyString::reverse() { int i,j; char ch; int len=strlen(gtr); for(i=0,j=len-1;i<j;i++,j--) { ch=str[i]; str[i]=str[j]; str[j]=ch; } }
解析
本题考查类的数据成员、类的成员函数、重载流运算符>>和插入运算符<<和字符数组。
程序定义了MyString类,它包含一个成员:str字符指针;默认构造函数和复制构造函数通过dup()函数,动态分配地址p,将参数拷贝到p指向的内存空间,再使用p初始化str;show()成员函数将str指向的字符串输出;reVerse()成员函数将str指向的字符串反转;重载的<<运算符函数调用形参m对象的show()函数输出str指向的字符串。
main()函数首先构造一个MyString类对象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自增1,j自减1,直到i不小于j为止。
转载请注明原文地址:https://kaotiyun.com/show/iFAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
重载的流运算符函数经常定义为类的______函数。
在测试时,完全不考虑程序的内部结构和内部特征的测试方法称为【 】测试方法。
属于关系的基本类型的是( )。
将7个数据进行插入排序,在最坏情况下需要比较的次数是
在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用()。
下列关于getline()函数的描述中,错误的是()。
在下面横线上填上适当的语句,完成程序。#include<iostream>usingnamespacestd;classBase{intx;public:Base(int
下面关于模板的描述,错误的是
下列哪个是C++语言的有效标识符?
以下选项中合法的用户标识符是
随机试题
总体很大,样本很小,总体无中间层次结构的样本,适于用()
1分子β-羟丁酸彻底氧化为CO2和H2O生成多少分子ATP
有小便失禁、舌咬破表现的是惊颤一点头一迎客式痉挛常为
男,42岁,6小时前头部外伤后当即意识丧失,20分钟后清醒,诉头痛,呕吐3次。1小时前患者再次出现昏迷,格拉斯哥7分,右侧瞳孔散大,对光反射消失,左侧肢体肌张力增高,膝腱、跟腱反射亢进。格拉斯哥昏迷评分项目包括
某市人民检察院在侦查赵某受贿案的过程中,除发现赵某利用职务之便收受他人贿赂外,还发现赵某涉嫌巨额财产来源不明罪和非法向外国人出售、赠送珍贵文物罪。请分析案例,回答以下问题:
某重力式码头主体工程施工分3个流水段进行,段间、段内施工工艺互无干扰。抛石基床(包括挖泥、抛石、整平)、沉箱安放(包括预制、出运、安装、箱内填料)、上部结构(包括沉箱封顶混凝土、胸墙及面层混凝土浇筑)分项工程各只有一个专业施工队施工。各分项工程所需工时如下
在下列和弦转位中,哪个是大三和弦的转位?()
某国政府推行赤字财政政策,2005年财政决算,其政府开支赤字为200亿美元,当年该国形成私人储蓄2500亿美元,发生私人投资2650亿美元,根据国民收入恒等式,如果不考虑经常转移和国际间要素收入,则该国2005年的经常账户差额是多少?
公民在战争期间下落不明的,从战争结束之日起满(),利害关系人可以向人民法院提出申请宣告其死亡。
分析下列材料并回答问题。材料1经济全球化使美国获得了巨额的国际资本。过去十多年里,美国始终是全球最大的资本输出国,同时也是最大的资本输入国。大量的外资净流入,有效地抵消了国内私人储蓄水平持续下降和巨额贸易逆差的不利影响,对于保持较高的就
最新回复
(
0
)