回 帖 发 新 帖 刷新版面

主题:几个复杂的问题,谢谢请详细解答哦

1.    定义一个计算算术表达式的类Expression,该类能够对算术表达式进行分析、求值和打印。其中,表达式由整数和运算符+、-、*、/ 和()构成。类可以有如下的类似定义:
class Expression
{
private:
    ……
public:
    Expression(const char*);
    double GetValue();
    void Print();
    ……
};
要求:
1)    构造函数Expression::Expression(const char*)的字符串参数就是有关的表达式。可以根据自己的要求增加定义任意形式和任意个数的构造函数。
2)    成员函数Expression::GetValue()返回表达式的值。
3)    成员函数Expression::Print()打印表达式及表达式的值。
4)    可以根据需要,自己增加类Expression的成员函数和成员变量。
程序中可能如下使用类Expression:
void main()
{
    double val;
    Expression  Expr(“3+5/2”);
    val = Expr.GetValue();
    Expr.Print();
    ……
}
为了简化程序,我们不检测表达式的正误,即假设表达式总是正确(合法)的。

2.    定义一个实现两个大整数运算的类LINT,该类能实现两个100位以内的大整数进行分析、求值和打印。其中,求值仅要求实现两个大整数的加法和减法运算。类可以有如下的类似定义:
class LINT
{
private:
    ……
public:
    LINT(const char*);
    LINT operator +( const LINT&  L);
    void Print();
    ……
};
   要求:
1)    构造函数LINT::LINT(char*)初始化该大整数。可以根据自己的要求增加定义任意形式和任意个数的构造函数。
2)    成员函数LINT::Print()打印两个大整数的运算值。
3)    可以根据需要,增加类LINT的成员函数和成员变量。
4)    类中的运算符重载方式,既可以重载为类的成员函数,也可以重载为类的友元函数。
5)    100位的大整数可以用数组或者链表来实现。当然也可以用你认为合适的数据结构。
程序中可能如下使用类LINT:
void main()
{
    LINT  L1, L2, L3;
    L3 = L1 + L2;
    L3.Print();
    L3 = L1 – L2;
    L3.Print();
    ……
}
    假设L1=12345678900987654321,L2=9876543210。因此,需要考虑如何初始化大整数。



3.    在大学中,有如下几类人员:学生、教师、工人和在职读书的教师。请根据所学的继承方法,给出这几类人员的描述。要求:
1)    给出这几类成员的类描述。如定义类Student,其中有姓名,学号等你认为必须的数据和成员函数。成员函数仅给出接口和说明即可,不用实现。
2)    给出这几类成员的继承关系。注意,在所描述的继承过程中,你可以抽象出或者定义新的类。
3)    简要说明你为什么要这样设计类的继承关系?

4.    对照C++语言和C语言的相同和不同之处,简述面相对象的基本特征、面向对象程序设计和面向过程的程序设计之间的联系和区别。

回复列表 (共3个回复)

沙发

1.用两个stack,操作符stack和操作数stack
2.模仿手工加减法
3.4.略

板凳

程序太长,没耐心看完,估计看完也看不懂 呵呵

3 楼

先加分,再解答~

我来回复

您尚未登录,请登录后再回复。点此登录或注册