首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数
admin
2017-07-28
49
问题
使用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全国计算机二级
相关试题推荐
下列程序编译错误,是由于划线处缺少某个语句,该语句是【 】。#include<iostream.h>classA{______private:intnuml;public
依照某种数据模型组织起来并存放二级存储器中的数据集合是指( )。
按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。
类MyClass的定义如下,若要对value赋值,则下面语句正确的是()。classMyClass{public:MyClass(){}MyClass(inti){value=newint(i);}
fstream、ifstream和ofstream文件流类的成员函数______关闭文件。
以下程序段的执行结果为()。#include<iostream.h>#definePLUS(x,y)x+yvoidmain(){intx=1,y=2,Z=3,sum:sum=PLUS(x+y,Z
下列叙述中,不属于软件需求规格说明书的作用的是
在下面函数的横线处填上适当的内容,使该函数能够利用递归方法求解字符串str的长度(不得使用系统提供的字符串处理函数)。intGetLen(char*str){if(______)return______;e
下列选项中不全是C++语言关键字的是
随机试题
下列表述属于法律规则的是()。
用金属尿道探条为尿道狭窄患者行尿道扩张治疗时,下列说法错误的是
女性,40岁,反复“尿路感染”多年,拟诊为慢性肾盂肾炎。下列哪项对确定诊断无帮助
患者,男,39岁。汗出不止,呼吸微弱,精神萎靡,脉微欲绝,用药宜首选()
A.100级洁净室B.10000级洁净室C.100000级洁净室D.300000级洁净室E.一般生产区
元代的蒙古人从中国内蒙古一直走到欧洲,最后在波斯——今天的伊朗一带,发现了一种画在瓷器上的原料“苏麻离青”。中国自己土产的画在瓷器上的蓝色颜料比较灰暗,比苏麻离青效果差很多。其中的原因是中国原料里含锰比较多,而伊朗出土的原料含锰少,所以颜色烧制之后特别清亮
中国共产党在实践中探索适合中国国情的社会主义建设道路,尝试将马克思主义第二次中国化开始的标志是()
查询设计器中包含的选项卡有
算法复杂度主要包括时间复杂度和【】复杂度。
Whatisthemostfundamentaldifferencebetweenplantsandanimals?
最新回复
(
0
)