首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的类。成员函数reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在main函数中给出了一个测试数
admin
2017-07-28
31
问题
使用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://jikaoti.com/ti/jmt0FFFM
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下面有关重载函数的说法中,正确的是()。
设有n元关系R及m元关系S,它们分别有p、q个元组,则关系R与S经笛卡尔积记为R×S,该关系是一个n+m元关系,那么其元组个数是()。
对于下面程序,对p进行赋值正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} }; main(){ void(A::*p)(int); }
数据库物理结构设计不包括( )。
在面向对象的系统中,系统责任的良好分配原则是( )。
冒泡排序算法在最好的情况下的元素交换次数为( )。
数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
下述关于数据库系统的叙述中正确的是
在下面函数的横线处填上适当的内容,使该函数能够利用递归方法求解字符串str的长度(不得使用系统提供的字符串处理函数)。intGetLen(char*str){if(______)return______;e
数据库系统的核心是
随机试题
一项工程,如果让甲、丙一起做,需要45天;让乙、丙一起做,需要60天;让甲、乙一起做,需要90天。若让甲、乙、丙一起做,需要多少天?
按现行规定,下列建设项目总投资表达式中,正确的是()。
依据《职业病防治法》,对从事接触职业病危害作业的劳动者,用人单位应当按照国务院卫生行政部门的规定,组织()前的职业健康检查,并将检查结果如实告知劳动者。
影响企业现金流转的外部因素有()。
初期的学堂乐歌,主要采取_________的方法。
给定资料 1.中国共产党第十八届中央委员会第三次全体会议,于2013年11月9日至12日在北京举行。全会听取和讨论了习近平受中央政治局委托作的工作报告,审议通过了《中共中央关于全面深化改革若干重大问题的决定》。习近平就《决定(讨论稿)》向全会作了说明
微机:电脑桌:办公室
论述清末新政的内容
邓小平指出:“马克思、列宁从来没有说过农村包围城市,这个原理在当时世界上还是没有的。但是毛泽东同志根据中国的具体条件指明了革命的具体道路。”毛泽东找到农村包嗣城市、武装夺取政权这条道路的根据是()
Lookatthetenstatementsforthispart.Youwillhearapassageabout"GreatTransformation".Youwilllistentoittwice
最新回复
(
0
)