您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象程序设计试卷作业答案
《面向对象程序设计》作业答案作业一:编写程序,将从键盘读入的所有大小写字母写入名为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;}作业二定义一个矩形类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;}作业三定义一个整数栈类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;}作业四定义分数类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;}作业五定义包含时、分、秒信息的时间类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;}作业六对于下面的类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;};标记单词或重新标记。
本文标题:面向对象程序设计试卷作业答案
链接地址:https://www.777doc.com/doc-1980970 .html