程序设计语言实验试卷及答案_第1页
程序设计语言实验试卷及答案_第2页
程序设计语言实验试卷及答案_第3页
程序设计语言实验试卷及答案_第4页
程序设计语言实验试卷及答案_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.(30分)现有文本文件num.txt,其中有若干行整数,每行中的整数用空格隔开,行末的

结束数字为0或1(这两个数字只出现在行末作为特殊含义),0表示需要对该行数字求和

(SUM),1表示需要对该行数字求平均值(AVG)。编写程序将文件num.txt中的数据逐个

读入,根据每行结束数字0或1的要求进行计算,并将结果按行依次存放到文件OUtPUt.txt

中,实例如下图所示。(注意只能用C++的文件库函数,不能用C的库函数)

输入文件num.txt输出文件oulput.txt

2340SUM:9

5671AVG:6

2430SUM:9

81012121AVG:10.5____________

2.(35分)设有一个字符串类MyString的定义如下:

classMyString{

public:

MyString(constchar*s);//构造字符串,使Collnt加一

MyString(constMyStringfeStr);〃构造字符串,使CoUnt加一

"MyStringO;〃析构字符串,使COUnt减一

char*jstr();〃访问字符串(获取当前字符串指针)

booloperator—(constMyString&str);〃两个字符串相等比较

charftoperator[](inti);〃下标访问第i个字符

staticvoidprintCount();〃打印COUnt的值

private:

char*SString;〃用于记录字符串内容,需要分配内存

staticintCOUnt;〃用于记录字符串对象的个数,初始值为0

};

请完成类中所有成员函数和重载运算符的实现代码,并编写主函数对每个函数进行测试。

3.(35分)编写程序计算正方体、圆形和圆柱体的表面积和体积。要求:

(1)设id^一个抽象类ObjeC3包含一个保护数据成员doubledata(它可以作为正方体的边

长、圆形的半径或圆柱体底面圆的半径),构造函数ObjeCl(doubledata),用于求表面积area()

和体积VolUme()的纯虚函数。

(2)由抽象类ObjeCt派生出描述正方体的CUbe类和描述圆形的CirCIe类,再由CirCIe类

派生出描述圆柱体的CyIinder类(增加height表示高度),在这3个类中都有构造函数、以

及用于计算表面积和体积的虚函数的重载实现。要求Cylinder类的area()和volume()函

数实现需要调用其父类CirCle的area。函数实现(即获得底面圆的面积,然后继续计算)。

(3)设计main函数对上述功能进行测试,计算并输出正方体、圆形和圆柱体3种不同类型

对象的表面积和体积。其中对派生类中area()和VOlUme()函数的调用要求使用基类ObjeCt

的指针进行调用。

1.

^include<iostream>

#include<fstream>

usingnamespacestd;

intmainO{

i!streaminfile("num.txt",ios::in);

if(Iinfile){

cout«*Inputfileopenerror!*«endl;

exit(O);

)

Ofstreamoutfile(''output,txt”,ios::out);

if(!outfile){

cout«*0utputfileopenerror!*«endl;

exit(O);

}//--------------至此10分

inti,sum=O,count-O;

while(!infile,eof())(

infile»i;

if(i=O)

(

outfile«zzSUM:"«sum<<“∖n";

sum=O;count=O;

)

elseif(i==1)

{

outfile<<"AVG:"«(double)sum/count<<“∖n";

sum=O;count-O;

)

else

{

sum+=i;

count++;

)

}//--------------至此25分

outfile.close();

infile,closeO;//-------------至此30分

returnO;

}

2.

#include<iostream>

usingnamespacestd;

classMyString{

public:

MyString(constchar*s);//构造字符串,使CoUnt加一

MyString(constMyStringftStr);〃构造字符串,使COUnt加一

'MyStringO;〃析构字符串,使CoUnt减•

char*c_str();〃访问字符串(获取当前字符串)

booloperator—(constMyString&str);//两个字符串相等比较

char&operator[](inti);〃下标访问第i个字符

staticvoidprintCountO;〃打印COUnt的值

private:

char*SString;〃用于记录字符串内容

staticintColmt;〃用于记录字符串对象的个数

);

intMyString::count=0;//-------------3分

MyString::MyString(constchar*s){//--------------4分

ifQs){

sstring=0;

else{

sstring=newchar[strlen(s)+1];

strcpy(sstring,s);

)

count++;

)

MyString::MyString(constMyString&str){//--------------4分

if(!str.sstring){

sstring=0;

)

else{

sstring=newchar[strlen(str.sstring)+1];

strcpy(sstring,str.sstring);

}

count++;

)

MyString::vMyStringO{//--------------4分

if(sstring)delete[]sstring;

count——;

}

char*MyString::c_str(){//-------------------4分

returnsstring;

)

boolMyString::operator==(constMyStringfestr){//-------------------4分

return(strcmp(sstring,str.sstring)?false:true);

)

char&MyString::operator[](inti){//-------------------4分

returnsstring[i];

)

voidMyString::printɛount(){//--------------------2分

cout<<z,Countis"«count«"∖n";

)

intmain(){//-------------------6分

MySlringa("thisisastring.",);

MyStringb(*IlikeC++.”);

MyStringc(b);

MyStiJng::printCount();

if(a二二b){

cout<<z,a==b"«zz«endl;

)

else{

cout<<〃a!=b〃«z/〃«endl;

if(b二二c){

cout«,zb==c〃«〃〃endl;

)

else{

z,,z

cout«b!二c«〃“«endl;

)

c[8]=c[9]=>P,;

cout«"cis"<<c.c_str()«"∖n";

if(b==c){

cout<<"b=c"«"''«endl;

else{

cout«,zb!二c"«〃〃«endl;

)

return0;

)

3.

^include<iostream>

usingnamespacestd;

classObject{//--------------6分

protected:

doubledata;

public:

Object(doubledata){

Object::data=data;

)

virtualdoubleareaO二O;

virtualdoublevolume()二O;

);

classCube:publicObject{//--------------6分

public:

Cube(doubledata):Object(data){};

doublearea(){

returndata*data*6;

}

doublevolumeO{

returndata*data*data;

)

};

classCircle:publicObject{//--------------6分

public:

Circle(doubleradius):Object(radius){};

doublearea(){

return3.1416*data*data;

doublevolume(){

returnO;

}

);

classCyIinder:publicCireIe{//•IO分

doubleheight;

public:

Cylinder(doubleradius,doubleheight):Circle(radius){

Cylinder::height-height;

doublearea()(

return2*3.1416*data*height+2*Circle::areaO;//----注意此处得分点

)

doublevolume(){

returnCircle::area()*height;//----注意此处得分点

)

);

intmain(){//----------------7分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论