Chapter 9: Review Questions

 T  F    1.   A structure does not need to contain objects
              that are of like type.

 T  F    2.   The structure tag does not reserve storage 
              for the structure, but instead gives a name 
              to the structure skeleton.

 T  F    3.   Aggregate data types include arrays, 
              structures, and unions.

 T  F    4.   Structures are passed by value when they are 
              used as array arguments.

 T  F    5.   The dot operator requires a structure 
              variable name or expression on the left side 
              of the dot.

 T  F    6.  Only structure variables, not structure tags, 
             can be initialized.

 T  F    7.  Only constant values can be used to initialize 
             structures when they are defined.

 T  F    8.  Structures that will be used in more than one 
             source file should be placed into a header 
             file.

 T  F    9.  Structures can be nested only four levels 
             deep, a limitation that still allows the 
             creation of complex data structures.

 T  F    10.  Both the typedef and the 
              #define command can be used to 
              simplify the creation of structure 
              variables apart from the initial definition 
              of the structure.

11. The term ADT (abstract data type) refers to:

    a.   A data type not possible in the C language.
    b.   A data type possessing high-level properties.
    c.   A tree none only.
    d.   A C structure only.

12. Every node in a tree structure possesses certain 
    attributes. 

    They are:

    a.   A value, one or more children (except terminal 
         nodes), and a parent (except the root).
    b.   A value, pointers.
    c.   A value, pointers, children, and parents.
    d.   Pointers only.

13. Consider the following ADT:

    customer_record          Example
         customer name       Jones, Bill
         previous payment    40.00
         account balance     545.75
         past due? (Y/N)     N

    Which structure definition below would best represent 
    customer_record?

    a.   struct customer_record
         {
              char *name;
              union
              {
                   float previous_payment;
                   float account_balance;
              };
              float past_due;
         };
    b.   struct customer_record
         {
              char *name;
              float previous_payment;
              float account_balance;
              float past_due;
         };
    c.   struct customer_record
         {
              char *name;
              float previous_payment;
              float account_balance;
              char past_due;
         };
    d.   struct customer_record
         {
              char *name;
              float previous_payment;
              float account_balance;
              int past_due:1;
         };
    
14. What is wrong with the following structure definition?

    struct node
    {
         int node_number;
         char value1[20];
         char *value2;
         struct node left_child;
         struct node right_child;
    };

    a.   An array may not be a structure member.
    b.   A structure may not contain an instance of itself.
    c.   node_number is not needed.
    d.   The structure has no definite size, which it must 
         have.

15. What does the following statement reference?

    my_struct[2].value

    a.   The third element of the array value.
    b.   The second member of my_struct which is 
         called value.
    c.   The third structure in the structure array 
         my_struct and its member value.
    d.   None of the above.