请使用VC6或使用[答题]菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3. cpp,补充编制C++程序proj3. cpp,其功能是读取文本文件in. dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件out. dat中。文件in. dat的长度不大于1000字节。
要求:
补充编制的内容写在“//**********333**********”与“//**********66666**********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。
注意:程序最后已将结果输出到文件out. dat中,输出函数writeToFile已经给出并且调用。
//proj3. cpp
#include < iostream >
#include < fstream >
#include < estring >
using namespace std;
class doc
private:
char * str;//文本字符串首地址
int length; //文本字符个数
public :
//构造函数,读取文件内容,用于初始化新对象,filwename是文件名字符串首地址
doe(char * filename) ;
void reverse() ;//将字符序列反转
~ doc () ;
void writeToFile ( char * filename) ;
;
doc : : doc ( char * filename)
ifstream myFile(filename) ;
int len = 1001 ,trap;
str = new char[ len] ;
length = 0 ;
while( ( tmp = myFile, get() ) != EOF)
str[ length ++ ] = trap ;
str[ length] =’ \0’ ;
myFile, close () ;
void doc : : reverse ()
//将数组str中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个
//字符交换……
//************* 333 ***********
//************* 666 ***********
doe : : ~ doc ()
delete [] str;
void doe : :writeToFile( char * filename)
ofstream outFile(filename) ;
outFile << str;
outFile, close () ;
void main()
doe myDoc( "in. dat" ) ;
myDoe, reverse () ;
myDoc, writeToFile( "out. dat" ) ;
参考答案:int i, j; //定义两个整数临时变量i. j.
for(i=0, j=length-A; i<j; i++, j—)
{
chartemp =str[i];
//把str[i]中的值保存在临时变量temp
str[i]=str[j];
//把str[j]值赋给str[i], 实现字符前后替换
str[j]=temp;
//把保存在临时变量temp中的值再赋值给str[j]
}
[考点分析] 本题主要考查的是doc类、构造函数、成员函数和析构函数。
[解题思路] 题目要求将myDoc中的字符序列反转,在main函数中我们看到myDoc是doc类,根据doc类的定义可以知道它是把读取文件的字符串存到str动态数组中。reverse函数实现将数组str中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换,依次类推。使用变量i和j,分别表示第一个字符和最后一个字符的下标,定义temp作为中间变量进行交换。