《面向对象程序设计》作业答案
作业一:
编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。程序结构完整,有不妥之处,酌情扣分。)
#include
作业二
定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口 设置该矩形对象的长和宽、计算面积并输出。(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)
#include
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<<\ cout<<\ cin>>len;
cout<<\ cin>>wid;
r1.setLength(len); r1.setWidth(wid);
cout<<\ return 0; }
作业三
定义一个整数栈类IStack,并用该类声明一个整数栈对象istack,往该对象压入整数 6、7、8,然后逐一弹栈输出。(本题总分10分,类结构2分,构造、析构函数各1分,压栈、出栈函数实现2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)
#include
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<<\ 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< 作业四 定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母 以简化形式表示,即24/36应该以2/3的形式表示,并实现如下功能: (1) 两个分数对象可以用*相乘,结果表示为简化形式; (2) 按a/b的形式输出分数的值,a、b为整数。 最后在main函数中对上述功能进行测试。 (本题总分10分,类结构2分,分数相乘实现函数2分,化简函数实现2分,输出格式转化函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。) #include 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 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;