当前位置:文档之家› 面向对象程序设计试卷作业答案

面向对象程序设计试卷作业答案

《面向对象程序设计》作业答案作业一:编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。

(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。

程序结构完整,有不妥之处,酌情扣分。

)#include <stdio.h>main ( ){FILE *fptr;fptr = fopen("a.txt","w");if (fptr==NULL)return 0;char a;a=getchar( );while(a!=EOF ){if(a>=’a’ && a<=’z’|| a>=’A’ && a<=’Z’) fputc(a,fptr);a = getchar();}fclose(fptr);return 0;}作业二定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口设置该矩形对象的长和宽、计算面积并输出。

(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。

程序结构完整,有不妥之处,酌情扣分。

)#include <stdio.h>#include <iostream.h>class Rectangle{public:int getArea();void setWidth(int w);void setLength(int l);private:int Length;int Width;};int Rectangle::getArea(){return Length*Width;}void Rectangle::setLength(int l){Length=l;}void Rectangle::setWidth(int w){Width=w;}main(){int len,wid;Rectangle r1;cout<<"Input the Rectangle's Information"<<endl;cout<<"Lentgh:"<<endl;cin>>len;cout<<"Width:"<<endl;cin>>wid;r1.setLength(len);r1.setWidth(wid);cout<<"Rectangle's Area:"<<r1.getArea()<<endl;return 0;}作业三定义一个整数栈类IStack,并用该类声明一个整数栈对象istack,往该对象压入整数6、7、8,然后逐一弹栈输出。

(本题总分10分,类结构2分,构造、析构函数各1分,压栈、出栈函数实现2分,主函数2分。

程序结构完整,有不妥之处,酌情扣分。

)#include <stdio.h>#include <iostream.h>struct Node {int item;struct Node *next;};class IStack {public:IStack();~IStack();void push(int item);int pop();int getItemNum();private:Node *head;int size;};IStack::IStack(){head = NULL;size = 0;}IStack::~IStack(){Node *temp = head;while (temp != NULL) {temp = head->next;delete head;head = temp;}}void IStack::push(int item){Node *temp = new Node;temp->item = item;temp->next = head;head = temp;size++;}int IStack::pop(){if (size == 0) {cout<<"No Item in the stack!\n";return 0;}Node *temp = head;head = head->next;int i = temp->item;delete temp;return i;}int IStack::getItemNum() {return size;}main(){ IStack istack;istack .push(6);istack .push(7);istack .push(8);cout<<istack .pop( )<<endl;cout<<istack .pop( )<<endl;cout<<istack .pop( )<<endl;return 0;}作业四定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母以简化形式表示,即24/36应该以2/3的形式表示,并实现如下功能:(1)两个分数对象可以用*相乘,结果表示为简化形式;(2)按a/b的形式输出分数的值,a、b为整数。

最后在main函数中对上述功能进行测试。

(本题总分10分,类结构2分,分数相乘实现函数2分,化简函数实现2分,输出格式转化函数2分,主函数2分。

程序结构完整,有不妥之处,酌情扣分。

)#include <stdio.h>#include <iostream.h>class Rational{public:Rational(int num1=1,int num2=1);Rational operator*(Rational r1);void showNomal();private:int up;int down;int Minmultiple(int a,int b); //最小公倍数int Maxdivisor(int a,int b);//最大公约数};Rational::Rational(int num1,int num2){up=num1;down=(num2==0)?1:num2;int i;i=Maxdivisor(up,down);up=up/i;down=down/i;}int Rational::Maxdivisor(int a,int b){int temp;int remainder;if(a<b){temp=a;a=b;b=temp;}remainder=a%b;while(remainder!=0){a=b;b=remainder;remainder=a%b;}return b;}int Rational::Minmultiple(int x,int y) {return x*y/Maxdivisor(x,y);}Rational Rational::operator*(Rational r1) {int Ndown,Nup,i;Ndown=down*r1.down;Nup=up*r1.up;i=Maxdivisor(Nup,Ndown);return Rational(Nup/i,Ndown/i);}void Rational::showNomal(){cout<<up<<"/"<<down<<endl;}main(){Rational r1(4,14);Rational r2(5,8);Rational r;cout<<"The r1 is:"<<endl;r1.showNomal();cout<<"The r2 is:"<<endl;r2.showNomal();r=r1*r2;cout<<"The r1*r2 is:"<<endl;r.showNomal();return 0;}作业五定义包含时、分、秒信息的时间类Time,并实现时间对象的流输入输出,格式为时:分:秒,如23:35:18。

(本题总分10分,类结构4分,输入输出函数实现各2分,主函数2分。

程序结构完整,有不妥之处,酌情扣分。

)#include "time.h"#include <iostream.h>class Time {friend ostream & operator<<(ostream &output, Time &t);friend istream & operator>>(istream &input, Time &t);public:Time(int h=0, int m=0, int s=0);private:int hour, minute, second;};Time::Time(int h, int m, int s){hour=h;minute=m;second=s;}ostream & operator<<(ostream &output, Time &t){output << t.hour << ":" << t.minute << ":" << t.second << endl;return output;}istream & operator>>(istream &input, Time &t){char a,b;input >> t.hour >> a >> t.minute >> b >> t.second ;return input;}int main(){Time t;cout << "Please input the time hh:mm:ss: " << endl;cin >> t;//调用自己定义的运算符重载函数operator>>(cin,t)cout << "your input time is: " << endl;cout << t << endl;//调用自己定义的运算符重载函数operator<<(cout,t) return 0;}作业六对于下面的类MyString,要求重载一些运算符后可以计算表达式:a = b + c,其中a、b、c都是类MyString的对象,+用以实现两个字符串对象的连接。

相关主题