國立暨南國際大學 99 學年度第二學期小考試卷

科目名稱:程式設計 開課系所:資訊工程學系 任課教師
吳坤熹
系所別:
年級:
學號:
姓名:
考試日期
2011.3.2

(考試時間: 16:30-16:45)


  1. (10%) Determine whether the following code has syntax erros or not.  If it is correct, predict its output.  If it is incorrect, point out the mistake(s).
    #include <iostream>
    using std::cout;

    class CStack
    {
    public:
    CStack() // Default Constructor
    {
    index = 0;
    }
    void push(int i)
    {
    a[index++] = i;
    }
    int pop()
    {
    return a[--index];
    }
    private:
    #define StackSize 10
    int a[StackSize];
    int index;
    };

    int main() {
    CStack stack1;
    stack1.push(3); stack1.push(2);
    cout << stack1.a[1] << "\n";
    }


  2. (10%) Determine whether the following code has syntax erros or not.  If it is correct, predict its output.  If it is
    incorrect, point out the mistake(s).

    #include <iostream> // Ex7_06.cpp
    using std::cout;
    using std::endl;

    class CBox // Class definition at global scope
    {
    public:
    double m_Length; // Length of a box in inches
    double m_Width; // Width of a box in inches
    double m_Height; // Height of a box in inches

    // Constructor definition
    CBox(double lv = 1.0, double bv, double hv = 1.0) // This line is different
    {
    cout << endl << "Constructor called.";
    m_Length = lv; // Set values of
    m_Width = bv; // data members
    m_Height = hv;
    }

    // Function to calculate the volume of a box
    double Volume()
    {
    return m_Length*m_Width*m_Height;
    }
    };

    int main()
    {
    CBox box2; // Declare box2 - no initial values

    cout << endl
    << "Volume of box2 = "
    << box2.Volume();

    cout << endl;
    return 0;
    }

  3. (10%) Determine whether the following code has syntax erros or not.  If it is correct, predict its output.  If it is
    incorrect, point out the mistake(s).

    // Ex7_12.cpp
    // Using a static data member in a class
    #include <iostream>
    using std::cout;
    using std::endl;

    class CBox // Class definition at global scope
    {
    public:
    static int objectCount; // Count of objects in existence

    // Constructor definition
    CBox(double lv, double bv = 1.0, double hv = 1.0)
    {
    cout << endl << "Constructor called.";
    m_Length = lv; // Set values of
    m_Width = bv; // data members
    m_Height = hv;
    objectCount++;
    }

    CBox() // Default constructor
    {
    cout << endl
    << "Default constructor called.";
    m_Length = m_Width = m_Height = 1.0;
    objectCount++;
    }

    // Function to calculate the volume of a box
    double Volume() const
    {
    return m_Length*m_Width*m_Height;
    }

    private:
    double m_Length; // Length of a box in inches
    double m_Width; // Width of a box in inches
    double m_Height; // Height of a box in inches
    };

    int CBox::objectCount = 0; // Initialize static member of CBox class

    int main()
    {
    CBox boxes[5]; // Array of CBox objects declared
    cout << endl << endl
    << "Number of objects (through class) = "
    << CBox::objectCount;

    CBox cigar(8.0, 5.0, 1.0); // Declare cigar box
    cout << endl
    << "Number of objects (through object) = "
    << boxes[2].objectCount;

    cout << endl << "Sizeof boxes[1] is " << sizeof boxes[1] << endl;
    return 0;
    }