ch7 Flashcards
7.1 De ne the following arrays:
A) empNums, a 100-element array of ints
B) payRates, a 25-element array of floats
C) miles, a 14-element array of longs
D) cityName, a 26-element array of string objects
E) lightYears, a 1,000-element array of doubles
7.1 A) int empNums[100]; B) float payRates[25]; C) long miles[14]; D) string cityNames[26]; E) double lightYears[1000];
7.2 What s wrong with the following array definitions? int readings[-1]; float measurements[4.5]; int size; string names[size];
7.2 int readings[-1]; // Size declarator cannot be negative
float measurements[4.5]; // Size declarator must be an integer
int size;
string names[size]; // Size declarator must be a constant
7.3 What would the valid subscript values be in a four-element array of doubles?
7.3 0 through 3
7.4 What is the difference between an array s size declarator and a subscript?
7.4 The size declarator is used in the array declaration statement. It specifies the number of
elements in the array. A subscript is used to access an individual element in an array.
7.5 What is array bounds checking ? Does C++ perform it?
7.5 Array bounds checking is a safeguard provided by some languages. It prevents a program
from using a subscript that is beyond the boundaries of an array. C++ does not perform
array bounds checking.
7.6 What is the output of the following code?
int values[5], count;
for (count = 0; count
7.6 1 2 3 4 5
7.7 The following program skeleton contains a 20-element array of ints called fish. When completed, the program should ask how many sh were caught by shermen 1 through 20, and store this data in the array. Complete the program. #include using namespace std; int main() { const int NUM_FISH = 20; int fish[NUM_FISH]; // You must finish this program. It should ask how // many fish were caught by fishermen 1-20, and // store this data in the array fish. return 0; }
7.7 #include using namespace std; int main() { const int NUM_FISH = 20; int fish[NUM_FISH], count; cout > fish[count]; } return 0; }
7.8 De ne the following arrays:
A) ages, a 10-element array of ints initialized with the values 5, 7, 9, 14, 15,
17, 18, 19, 21, and 23.
B) temps, a 7-element array of floats initialized with the values 14.7, 16.3,
18.43, 21.09, 17.9, 18.76, and 26.7.
C) alpha, an 8-element array of chars initialized with the values J , B , L, A,
* , $ , H , and M .
7.8 A) int ages[10] = {5, 7, 9, 14, 15, 17, 18, 19, 21, 23};
B) float temps[7] = {14.7, 16.3, 18.43, 21.09, 17.9, 18.76, 26.7};
C) char alpha[8] = {‘J’, ‘B’, ‘L’, ‘A’, ‘*’, ‘$’, ‘H’, ‘M’};
7.9 Is each of the following a valid or invalid array definition? (If a definition is
invalid, explain why.)
int numbers[10] = {0, 0, 1, 0, 0, 1, 0, 0, 1, 1};
int matrix[5] = {1, 2, 3, 4, 5, 6, 7};
double radii[10] = {3.2, 4.7};
int table[7] = {2, , , 27, , 45, 39};
char codes[] = {‘A’, ‘X’, ‘1’, ‘2’, ‘s’};
int blanks[];
7.9 The definition of numbers is valid.
The declaration of matrix is invalid because there are too many values in the initialization list.
The definition of radii is valid.
The definition of table is invalid. Values cannot be skipped in the initialization list.
The definition of codes is valid.
The definition of blanks is invalid. An initialization list must be provided when an array
is implicitly sized.
7.10 Given the following array definition:
int values[] = {2, 6, 10, 14};
What does each of the following display?
A) cout
7.10 A) 0
B) 3
C) 6
D) 14
7.11 Given the following array definition:
int nums[5] = {1, 2, 3};
What will the following statement display?
cout «_space;nums[3];
7.11 0
7.12 What is the output of the following code? (You may need to use a calculator.)
double balance[5] = {100.0, 250.0, 325.0, 500.0, 1100.0};
const double INTRATE = 0.1;
cout
- 12
- 00
- 00
- 50
- 00
- 00
7.13 What is the output of the following code? (You may need to use a calculator.) const int SIZE = 5; int time[SIZE] = {1, 2, 3, 4, 5}, speed[SIZE] = {18, 4, 27, 52, 100}, dist[SIZE]; for (int count = 0; count
7.13 1 18 18 2 4 8 3 27 81 4 52 208 5 100 500
7.14 Given the following array definitions
double array1[4] = {1.2, 3.2, 4.2, 5.2};
double array2[4];
will the following statement work? If not, why?
array2 = array1;
7.14 No. An entire array cannot be copied in a single statement with the = operator. The array
must be copied element-by-element.
7.15 When an array name is passed to a function, what is actually being passed?
7.15 The address of the array.
7.16 When used as function arguments, are arrays passed by value?
7.16 No.
7.17 What is the output of the following program? (You may need to consult the ASCII table in Appendix B.) #include using namespace std; // Function prototypes void fillArray(char [], int); void showArray(const char [], int); int main () { const int SIZE = 8; char prodCode[SIZE] = {'0', '0', '0', '0', '0', '0', '0', '0'}; fillArray(prodCode, SIZE); showArray(prodCode, SIZE); return 0; } // Definition of function fillArray. // (Hint: 65 is the ASCII code for 'A') void fillArray(char arr[], int size) { char code = 65; for (int k = 0; k
7.17 ABCDEFGH
7.18 The following program skeleton, when completed, will ask the user to enter 10 integers, which are stored in an array. The function avgArray, which you must write, is to calculate and return the average of the numbers entered. #include using namespace std; // Write your function prototype here int main() { const int SIZE = 10; int userNums[SIZE]; cout > userNums[count]; } cout
7.18 (The entire program is shown here.) #include using namespace std; // Function prototype here double avgArray(int []); int main() { const int SIZE = 10; int userNums[SIZE]; cout > userNums[count]; } cout
7.19 Define a two-dimensional array of ints named grades. It should have 30 rows
and 10 columns.
7.19 int grades[30][10];
7.20 How many elements are in the following array?
double sales[6][4];
7.20 24
7.21 Write a statement that assigns the value 56893.12 to the first column of the first
row of the array defined in Question 7.20.
7.21 sales[0][0] = 56893.12;
7.22 Write a statement that displays the contents of the last column of the last row of
the array defined in Question 7.20.
7.22 cout «_space;sales[5][3];
7.23 Define a two-dimensional array named settings large enough to hold the table
of data below. Initialize the array with the values in the table.
12 24 32 21 42
14 67 87 65 90
19 1 24 12 8
7.23 int settings[3][5] = {{12, 24, 32, 21, 42},
{14, 67, 87, 65, 90},
{19, 1, 24, 12, 8}};
7.24 Fill in the table below so it shows the contents of the following array:
int table[3][4] = {{2, 3}, {7, 9, 2}, {1}};
2 3 0 0
7 9 2 0
1 0 0 0
7.25 Write a function called displayArray7. The function should accept a twodimensional array as an argument and display its contents on the screen. The function should work with any of the following arrays: int hours[5][7]; int stamps[8][7]; int autos[12][7]; int cats[50][7];
7.25 void displayArray7(int arr[][7], int rows)
{
for (int x = 0; x
7.26 A video rental store keeps DVDs on 50 racks with 10 shelves each. Each shelf
holds 25 DVDs. Define a three-dimensional array large enough to represent the
store s storage system.
7.26 int vidNum[50][10][25];
7.27 What header file must you #include in order to define vector objects?
7.27 vector
7.28 Write a definition statement for a vector named frogs. frogs should be an
empty vector of ints.
7.28 vector frogs;
7.29 Write a definition statement for a vector named lizards. lizards should be a
vector of 20 floats.
7.29 vector lizards(20);
7.30 Write a definition statement for a vector named toads. toads should be a vector
of 100 chars, with each element initialized to ‘Z’.
7.30 vector toads(100, ‘Z’);
7.31 gators is an empty vector of ints. Write a statement that stores the value 27 in
gators.
- 31 vector gators;
gators. push_back(27);
7.32 snakes is a vector of doubles, with 10 elements. Write a statement that stores
the value 12.897 in element 4 of the snakes vector.
7.32 snakes[4] = 12.897;
Short Answer
1. What is the difference between a size declarator and a subscript?
- The size declarator is used in a definition of an array to indicate the number of elements the
array will have. A subscript is used to access a specific element in an array.
- Look at the following array definition.
int values[10];
How many elements does the array have?
What is the subscript of the first element in the array?
What is the subscript of the last element in the array?
Assuming that an int uses four bytes of memory, how much memory does the array use?
10
zero
9
40 bytes of memory
- Why should a function that accepts an array as an argument, and processes that
array, also accept an argument specifying the array s size?
- Because, with the array alone the function has no way of determining the number of elements
it has.
- Consider the following array definition:
int values[5] = { 4, 7, 6, 8, 2 };
What does each of the following statements display?
cout
will display value2;
will display value 14;
will display value 8
- How do you define an array without providing a size declarator?
- By providing an initialization list. The array is sized to hold the number of values in the list.
- Look at the following array definition.
int numbers[5] = { 1, 2, 3 };
What value is stored in numbers[2]?
What value is stored in numbers[4]?
given an array definition.
int numbers[5] = {1, 2, 3};
the value stored in numbers[2] is 3.
the value stored in number[4] is 0, because it’s value not initialized
- Assuming that array1 and array2 are both arrays, why is it not possible to assign
the contents of array2 to array1 with the following statement?
array1 = array2;
- Because an array name without brackets and a subscript represents the array’s beginning
memory address. The statement shown attempts to assign the address of array2 to array1,
which is not permitted.
- Assuming that numbers is an array of doubles, will the following statement display
the contents of the array?
cout «_space;numbers «_space;endl;
cout «_space;numbers «_space;endl;
the statement will not display the contents of array instead it display memory address
- Is an array passed to a function by value or by reference?
- By reference.
- When you pass an array name as an argument to a function, what is actually being
passed?
passing array name to function will pass address of array of integers
- How do you establish a parallel relationship between two or more arrays?
- By using the same subscript value for each array.
- Look at the following array definition.
double sales[8][10];
How many rows does the array have?
How many columns does the array have?
How many elements does the array have?
Write a statement that stores a number in the last column of the last row in the array.
double sales[8][10];
array has 8 rows
array has 10 columns
array has 80 elements
sales[7][9]=52.61, stores the number in the last column of the last row in the array
- When writing a function that accepts a two-dimensional array as an argument, which
size declarator must you provide in the parameter for the array?
- The second size declarator, which is for the number of columns.
- What advantages does a vector offer over an array?
- you do not have to declare the number of elements that a vector will have;
- if you add a value to a vector that is already full, the vector will automatically increase its size to accommodate the new data
Fill-in-the-Blank
15. The _________ indicates the number of elements, or values, an array can hold.
- size declarator
- The size declarator must be a(n) _________ with a value greater than _________.
integer / zero
- Each element of an array is accessed and indexed by a number known as a(n)
_________.
- subscript
- Subscript numbering in C++ always starts at _________.
zero
- The number inside the brackets of an array definition is the _________, but the number
inside an array s brackets in an assignment statement, or any other statement that
works with the contents of the array, is the _________.
- size declarator, subscript
- C++ has no array _________ checking, which means you can inadvertently store data
past the end of an array.
bounds
- Starting values for an array may be specified with a(n) _________ list.
- initialization
- If an array is partially initialized, the uninitialized elements will be set to _________.
zero
- If the size declarator of an array definition is omitted, C++ counts the number of items
in the _________ to determine how large the array should be.
- initialization list
- By using the same _________ for multiple arrays, you can build relationships between
the data stored in the arrays.
subscript
- You cannot use the _________ operator to copy data from one array to another in a
single statement.
- =
- Any time the name of an array is used without brackets and a subscript, it is seen as
_________.
array’s beginning memory address
- To pass an array to a function, pass the _________ of the array.
- address, or name
- A(n) _________ array is like several arrays of the same type put together.
two dimensional
- It s best to think of a two-dimensional array as having _________ and _________.
- rows, columns
- To define a two-dimensional array, _________ size declarators are required.
two
- When initializing a two-dimensional array, it helps to enclose each row s initialization
list in _________.
- braces
- When a two-dimensional array is passed to a function the _________ size must
be specified.
column
- The ____________________ is a collection of programmer-defined data types and
algorithms that you may use in your programs
- Standard Template Library (or STL)
- The two types of containers defined by the STL are ___________ and
______________.
sequence containers / associative containers
- The vector data type is a(n) ______________ container.
- sequence
- To define a vector in your program, you must #include the ____________ header
file.
vector
- To store a value in a vector that does not have a starting size, or that is already full,
use the ________________ member function.
- push_back
- To determine the number of elements in a vector, use the _____________ member
function.
size
- Use the ________________ member function to remove the last element from a vector.
- pop_back
- To completely clear the contents of a vector, use the ___________ member function.
clear
Algorithm Workbench
41. names is an integer array with 20 elements. Write a for loop that prints each element
of the array.
- for (int i = 0; i < 20; i++)
cout «_space;names[i] «_space;endl;
- The arrays numberArray1 and numberArray2 have 100 elements. Write code that
copies the values in numberArray1 to numberArray2.
const int size = 100;
for(int i =0; i<size;i++)
numberArray2[i] = numberArray1[i]
- In a program you need to store the identification numbers of 10 employees (as ints)
and their weekly gross pay (as doubles).
A) De ne two arrays that may be used in parallel to store the 10 employee identi cation
numbers and gross pay amounts.
B) Write a loop that uses these arrays to print each employee s identi cation number
and weekly gross pay.
43. const int SIZE = 10; int id[SIZE]; // To hold ID numbers double weeklyPay[SIZE]; // To hold weekly pay // Display each employee's gross weekly pay. for (int i = 0; i
- Define a two-dimensional array of integers named grades. It should have 30 rows
and 10 columns.
int grades[30][10];
- In a program you need to store the populations of 12 countries.
A) Define two arrays that may be used in parallel to store the names of the countries
and their populations.
B) Write a loop that uses these arrays to print each country s name and its population.
45. const int SIZE = 12; // A string array to hold the country names string countries[SIZE]; // An array to hold populations long populations[SIZE]; // Display each country's name and population. for (int i = 0; i
- The following code totals the values in two arrays: numberArray1 and
numberArray2. Both arrays have 25 elements. Will the code print the correct sum of
values for both arrays? Why or why not?
int total = 0; // Accumulator
int count; // Loop counter
// Calculate and display the total of the first array.
for (count = 0; count
see
- Look at the following array definition.
int numberArray[9][11];
Write a statement that assigns 145 to the rst column of the rst row of this array.
Write a statement that assigns 18 to the last column of the last row of this array.
- numberArray[0][0] = 145;
numberArray[8][10] = 18;
48. values is a two-dimensional array of float s with 10 rows and 20 columns. Write code that sums all the elements in the array and stores the sum in the variable total .
int row, col;
float total = 0.0;
for (row = 0; row < 10; row ++)
{
for(col = 0; col <20; col++)
total +=value[row][col];
- An application uses a two-dimensional array defined as follows.
int days[29][5];
Write code that sums each row in the array and displays the results.
Write code that sums each column in the array and displays the results.
49. const int NUM_ROWS = 29; const int NUM_COLS = 5; int row, col, // Loop counters total; // Accumulator // Display the sum of each row. for (row = 0; row
True or False
50. T F An array s size declarator can be either a literal, a named constant, or a variable.
f
as array size declarator must be a constant integer expression with a value greater than zero. it can be either a literal or a named constant
- T F To calculate the amount of memory used by an array, multiply the number of
elements by the number of bytes each element uses.
t
- T F The individual elements of an array are accessed and indexed by unique
numbers.
t
- T F The first element in an array is accessed by the subscript 1.
f
- T F The subscript of the last element in a single-dimensional array is one less than
the total number of elements in the array.
t
- T F The contents of an array element cannot be displayed with
cout
.
f
- T F Subscript numbers may be stored in variables.
t
- T F You can write programs that use invalid subscripts for an array.
t
- T F Arrays cannot be initialized when they are defined. A loop or other means must
be used.
f
as array can be initialized when they are defined
- T F The values in an initialization list are stored in the array in the order they
appear in the list.
t
- T F C++ allows you to partially initialize an array.
t
- T F If an array is partially initialized, the uninitialized elements will contain
“garbage”.
f
- T F If you leave an element uninitialized, you do not have to leave all the ones that
follow it uninitialized.
f
all the elements followed it are un initialized as will
- T F If you leave out the size declarator of an array definition, you do not have to
include an initialization list.
f
64. T F The uninitialized elements of a string array will automatically be set to the value "0" .
t
- T F You cannot use the assignment operator to copy one array s contents to
another in a single statement.
t
- T F When an array name is used without brackets and a subscript, it is seen as the
value of the first element in the array.
f
an array name without brackets and a subscript indicates array’s beginning memory address
- T F To pass an array to a function, pass the name of the array.
t
- T F When defining a parameter variable to hold a single-dimensional array argument,
you do not have to include the size declarator.
f
as size declarator must be specified in order to process elements in function
- T F When an array is passed to a function, the function has access to the original
array.
t
- T F A two-dimensional array is like several identical arrays put together.
t
- T F It s best to think of two-dimensional arrays as having rows and columns.
t
- T F The first size declarator (in the declaration of a two-dimensional array) represents
the number of columns. The second size definition represents the number
of rows.
f, as first size declarator represents the number of rows and second represents the number of columns
- T F Two-dimensional arrays may be passed to functions, but the row size must be
specified in the definition of the parameter variable.
f
- T F C++ allows you to create arrays with three or more dimensions.
t
- T F A vector is an associative container.
f
- T F To use a vector, you must include the vector header file.
t
- T F vectors can report the number of elements they contain.
t
- T F You can use the [] operator to insert a value into a vector that has no elements.
f
only using function push_back(value) we can insert data to vector
- T F If you add a value to a vector that is already full, the vector will automatically
increase its size to accommodate the new value.
t
Find the Error
Each of the following definitions and program segments has errors. iLocate as many as you can.
80. int size;
double values[size];
must be provided with initial value and used in next statement
- int collection[-20];
- The size declarator cannot be negative.
82. int table[10]; for (int x = 0; x < 20; x++) { cout << "Enter the next value: "; cin >> table[x]; }
invalid access of array
- int hours[3] = 8, 12, 16;
- The initialization list must be enclosed in braces.
- int numbers[8] = {1, 2, , 4, , 5};
two of initialization values are left out
- float ratings[];
- For the array to be implicitly sized there must be an initialization list.
- char greeting[] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’};
cout «_space;greeting;
a null terminator must be specified in the intialization list
- int array1[4], array2[4] = {3, 6, 9, 12};
array1 = array2;
- The assignment operator cannot be used to assign the contents of one array to another, in a
single statement.
88. void showValues(int nums) { for (int count = 0; count < 8; count++) cout << nums[count]; }
the function should have a parameter to hold array elements and size parameter must also be there
89. void showValues(int nums[4][]) { for (rows = 0; rows < 4; rows++) for (cols = 0; cols < 5; cols++) cout << nums[rows][cols]; }
- The parameter must specify the number of columns, not the number of rows.