题库 题库

【简答题】

请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,补充编制c++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件out.dat中。文件in.dat的长度不大于1000字节。
要求:
补充编制的内容写在“//**********”与“//**********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。
注意:程序最后已将结果输出到文件0ut.dat中,输出函数writeToFile已经给出并且调用。
//proj3.cpp
#include
#include
#include
using namespace std;
class doc
{
private:
char*sir;//文本字符串首地址
int length;//文本字符个数
public:
//构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址
doc(char*filename);
void reverse();//将字符序列反转
一doc();
void writeToFile(char*filename);
};
doc::doc(char}filename)
{
ifstream myFile(filename);
int len=1001,tmp;
atr=new char[1en];
length=0;
while((trap=myFile.get())!=EOF)
{
str[1ength++]=trap;
}
str[1ength]=‘\0’;
myFile.close();
}
void doc::reverse(){
//将数组atr中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个
//字符交换……
//*************333*************
//*************666*************
}
doc::~doe()
{
delete[]str;
}
void doc::writeToFile(char*filename)
{
Ofstream outFile(filename);
outFile<
outFile.close();
}
void main()
{
doc myDoc(”in.dat”);
myDoc.reveme();
myDoc.writeToFile(”out.dat”);
}

参考答案

int j,J;//定义两个整数l临时变量i.j.
for(i=0,j=length一1;i<j;i++,j-)
chartemp=str[i];
//把str[i]中的值保存在临时变量temp
str[i]=str[j];
//把Str[j]值赋给Str[i],实现字符前后替换
str[j]=temp;
//把保存在临时变量temp中的值再赋值给Str[j]
}

相关试题

单选题 下列数据结构中,属于非线性结构的是( )。 查看答案
单选题 程序流程图中带有箭头的线段表示的是( )。 查看答案
单选题 软件详细设计产生的图如下:

该图是( )。
查看答案
单选题 必须用一对大括号括起来的程序段是( )。 查看答案
单选题 秘序调试的任务是( )。 查看答案
单选题 下列字符串中。不可以用做c++标识符的是(  )。 查看答案
单选题 软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。 查看答案
单选题 软件设计中模块划分应遵循的准则是( )。 查看答案
单选题 下列叙述中正确的是(  )。 查看答案
单选题 有如下程序:
#include
using namespace std;
class A{
public:
virtual void fancl(){cout<<”Al”;}
void func2(){cout<<”A2”;}
};
class B:public A{
public:
void funcI(){tout<<”Bl”;}
void func2(){tout<<”B2”;}
};
intmain()}
A*P=new B:
P—>funcl();
P—>func2();
delete p;
return 0;
}
执行这个程序的输出结果是(  )。
查看答案
单选题 不能作为重载函数的调用的依据是(  )。 查看答案
单选题 如果类A被说明成类B的友元,则( )。 查看答案
单选题 有如下类定义:
class Foo
{
public:
Foo(int v):value(V){}//①
~Foo(){}//②
private:
Foo(){}//③
int value=0://④
};
其中存在语法错误的行是(  )。
查看答案
单选题 下列程序的执行结果为( )。
#include
void main()
{
int a=3,b=0;
int*P =&a;
b=+a++;
cout<<*P<<”,”<<B<
}
查看答案
单选题 下面关于break语句的描述中,不正确的是( )。 查看答案
单选题 下面程序的运行结果为( )。
#include
void main()
{
for(int a=0,x=0;!x&&a<=10;a++)
{
a++:
}
cout<<A<
}
查看答案
单选题 有如下程序:
#inClude using namespaCe std; Class A{
publiC:
statiC int a;
void init(  ){。a=1;}
A(int a=2){init(  );a++;} };
int A::a:0: A obj;
int main(  ) {
Cout<<OBJ.A:&NBSP;&NBSP;&NBSP;
}
运行时输出的结果是(  )。
查看答案
单选题 下列运算符中,在c++语言中不能重载的是( )。 查看答案
单选题 有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
void output(){Cout<<1;}
virtual void Print(){Cout<<'B’;} };
Class Derived:publiC Base{ publiC:
void output(){Cout<<2;} void Print(){Cout<<’D ';} };
int main() {
Base * ptr=new Derived; ptr一>output();
ptr一>Print(); delete ptr;
retum0; }
执行这个程序的输出结果是( )。
查看答案
单选题 执行下列语句段后,输出字符“*”的个数是( )。
for(int i=50;i>1;i-=2)Cout<<'*':
查看答案