面向对象程序设计试卷A答案及评分标准

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《面向对象程序设计》试卷A答案及评分标准本试卷共10个题,分别按以下标准评分,最后根据整个答题的情况,从程序设计风格的角度给予0-5分的附加分。1、编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。程序结构完整,有不妥之处,酌情扣分。)#includestdio.hmain(){FILE*fptr;fptr=fopen(a.txt,w);if(fptr==NULL)return0;chara;a=getchar();while(a!=EOF){if(a=’a’&&a=’z’||a=’A’&&a=’Z’)fputc(a,fptr);a=getchar();}fclose(fptr);return0;}2、定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口设置该矩形对象的长和宽、计算面积并输出。(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)#includestdio.h#includeiostream.hclassRectangle{public:intgetArea();voidsetWidth(intw);voidsetLength(intl);private:intLength;intWidth;};intRectangle::getArea(){returnLength*Width;}voidRectangle::setLength(intl){Length=l;}voidRectangle::setWidth(intw){Width=w;}main(){intlen,wid;Rectangler1;coutInputtheRectangle'sInformationendl;coutLentgh:endl;cinlen;coutWidth:endl;cinwid;r1.setLength(len);r1.setWidth(wid);coutRectangle'sArea:r1.getArea()endl;return0;}3、定义一个整数栈类IStack,并用该类声明一个整数栈对象istack,往该对象压入整数6、7、8,然后逐一弹栈输出。(本题总分10分,类结构2分,构造、析构函数各1分,压栈、出栈函数实现2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)#includestdio.h#includeiostream.hstructNode{intitem;structNode*next;};classIStack{public:IStack();~IStack();voidpush(intitem);intpop();intgetItemNum();private:Node*head;intsize;};IStack::IStack(){head=NULL;size=0;}IStack::~IStack(){Node*temp=head;while(temp!=NULL){temp=head-next;deletehead;head=temp;}}voidIStack::push(intitem){Node*temp=newNode;temp-item=item;temp-next=head;head=temp;size++;}intIStack::pop(){if(size==0){coutNoIteminthestack!\n;return0;}Node*temp=head;head=head-next;inti=temp-item;deletetemp;returni;}intIStack::getItemNum(){returnsize;}main(){IStackistack;istack.push(6);istack.push(7);istack.push(8);coutistack.pop()endl;coutistack.pop()endl;coutistack.pop()endl;return0;}4、定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母以简化形式表示,即24/36应该以2/3的形式表示,并实现如下功能:(1)两个分数对象可以用*相乘,结果表示为简化形式;(2)按a/b的形式输出分数的值,a、b为整数。最后在main函数中对上述功能进行测试。(本题总分10分,类结构2分,分数相乘实现函数2分,化简函数实现2分,输出格式转化函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)#includestdio.h#includeiostream.hclassRational{public:Rational(intnum1=1,intnum2=1);Rationaloperator*(Rationalr1);voidshowNomal();private:intup;intdown;intMinmultiple(inta,intb);//最小公倍数intMaxdivisor(inta,intb);//最大公约数};Rational::Rational(intnum1,intnum2){up=num1;down=(num2==0)?1:num2;inti;i=Maxdivisor(up,down);up=up/i;down=down/i;}intRational::Maxdivisor(inta,intb){inttemp;intremainder;if(ab){temp=a;a=b;b=temp;}remainder=a%b;while(remainder!=0){a=b;b=remainder;remainder=a%b;}returnb;}intRational::Minmultiple(intx,inty){returnx*y/Maxdivisor(x,y);}RationalRational::operator*(Rationalr1){intNdown,Nup,i;Ndown=down*r1.down;Nup=up*r1.up;i=Maxdivisor(Nup,Ndown);returnRational(Nup/i,Ndown/i);}voidRational::showNomal(){coutup/downendl;}main(){Rationalr1(4,14);Rationalr2(5,8);Rationalr;coutTher1is:endl;r1.showNomal();coutTher2is:endl;r2.showNomal();r=r1*r2;coutTher1*r2is:endl;r.showNomal();return0;}5、定义包含时、分、秒信息的时间类Time,并实现时间对象的流输入输出,格式为时:分:秒,如23:35:18。(本题总分10分,类结构4分,输入输出函数实现各2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)#includetime.h#includeiostream.hclassTime{friendostream&operator(ostream&output,Time&t);friendistream&operator(istream&input,Time&t);public:Time(inth=0,intm=0,ints=0);private:inthour,minute,second;};Time::Time(inth,intm,ints){hour=h;minute=m;second=s;}ostream&operator(ostream&output,Time&t){outputt.hour:t.minute:t.secondendl;returnoutput;}istream&operator(istream&input,Time&t){chara,b;inputt.hourat.minutebt.second;returninput;}intmain(){Timet;coutPleaseinputthetimehh:mm:ss:endl;cint;//调用自己定义的运算符重载函数operator(cin,t)coutyourinputtimeis:endl;couttendl;//调用自己定义的运算符重载函数operator(cout,t)return0;}6、对于下面的类MyString,要求重载一些运算符后可以计算表达式:a=b+c,其中a、b、c都是类MyString的对象,+用以实现两个字符串对象的连接。请重载相应的运算符并编写程序测试。(本题总分10分,类结构4分,重载函数实现4分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)classMyString{public:MyString(char*s){str=newchar[strlen(s)+1];strcpy(str,s);}~MyString(){delete[]str;}private:char*str;};7、下面是一个形状类Shape,请编写类Shape的派生类:圆类Circle、三角形类Triangle和矩形类Rectangle,并重定义基类的成员函数使之返回正确的结果(show函数要输出对象的基本信息),然后编写程序测试它们。(本题总分10分,三个类的实现各3分,主函数1分。程序结构完整,有不妥之处,酌情扣分。)classShape{public://图形的面积doublearea(){return0.0;}//输出对象的信息voidshow(){coutShapeObject:endl;}};#includeiostream.h#includemath.hclassCircle:publicShape{public:Circle(doublexn,doubleyn,doublern){x=xn;y=yn;r=rn;}doublearea(){return3.14*r*r;}voidshow(){coutCircleObject:endl;cout圆心坐标:xxnyyn半径r=rendl;}private:doublex,y,z;};classTriangle:publicShape{public:Triangle(doublean,doublebn,doublecn){a=an;b=bn;c=cn;}doublearea(){doublet=0.5*(a+b+c);returnsplow(t*(t-a)*(t-b)*(t-c));}voidshow(){ccutTriangle:endl;cout三边分别为abcendl;}private:doublea,b,c};classRectangle:publicShape{public:Rectangle(doublean,doublebn){a=an;b=bn;}doublearea(){returna*b;}voidshow(){coutRectangleObjectendl;cout长:a宽:bendl;}private:doublea,b;}intmain(){Circlecircle(1.0,1.0,1.0);Triangletriange(1.0,1.0,1.0);Rectanglerectangle(1.0,1.0,1.0

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功