Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 21

IPC144 Progress Test #02

Functions
5.1 All of the following are true of functions except:
(a) they define specific tasks that can be used at many points in a
program
(b) a function call must specify the name and arguments of the
function
(c) the definition of a function is always visible to other functions
(d) the implementation of a function is hidden from the caller

5.2 Experience has shown that the best way to construct a program is
from small pieces. This is called __________.
a) bottom up
b) the whole is greater than the sum of the parts
c) divide and conquer
d) recursion

5.3 Which is not an ANSI standard library function?


a) printf
b) main
c) scanf
d) pow

5.4 Which one item is most different from the other three?
a) worker function
b) caller
c) calling function
d) boss function

5.5 When a called function completes its task, it normally


a) terminates program execution normally
b) aborts program execution
c) logs its results
d) returns to the calling function
IPC144 Progress Test #02

5.6 Which statement is true?


a) The boss function normally knows how the worker function per-
forms its designated tasks.
b) A worker function may not call other worker functions.
c) “Hiding” of implementation details makes it difficult to understand
software.
d) The boss function is normally unaware when a worker function
calls another function.

5.7 Functions are __________ by a function call.


a) inveigled
b) invoked
c) internalized
d) inverted

5.8 All functions in the math library return the data type __________.
a) float
b) int
c) long
d) double

5.9 If a = 7.0, b = 7.0 and c = 6.0, then what is printed by


printf("%.2f", sqrt(a + b * c));
a) 49
b) 7.00
c) 7
d) 49.00

5.10 What is the value of fabs(-5.0)?


a) 5
b) 5.0
c) -5
d) –5.0

5.11 Which of the following is not included in <math.h>?


(a) pow
IPC144 Progress Test #02

(b) floor
(c) ln
(d) log10

5.12 A valid reason for building programs out of functions is


(a) that the divide-and-conquer approach facilitates program
construction
(b) that pre-existing functions can be used to create new programs
(c) the avoidance of code iteration within a program
(d) all of the above

5.13 Which is not a motivation for “functionalizing” a program?


a) The divide-and-conquer approach makes program development
more manageable.
b) Software reusability—using existing building blocks to create new
programs.
c) Avoid repeating code.
d) Execution performance—functionalized programs run faster.

5.14 Which statement is false?


a) Each function should be limited to performing a single, well-defined
task.
b) If you cannot choose a concise name that expresses what a function
does, it’s possible that the function is attempting to perform too many
diverse tasks.
c) Every function should be broken into smaller functions.
d) A function’s parameters are local variables.

5.15 The function prototype


double mySqrt(int x);
(a) defines a function called mySqrt which takes an integer as an
argument and returns a double
(b) defines a function called double which calculates square roots
(c) defines a function called mySqrt which takes an argument of type
x and returns a double
(d) defines a function called mySqrt which takes a double as an
IPC144 Progress Test #02

argument and returns an integer

5.16 Which of the following will not produce a syntax error?


(a) Omitting a return type from a function definition if the function
prototype specifies a return type other than int
(b) Returning a value from a function defined as void
(c) Defining a function parameter again inside a function
(d) Using the same names for arguments passed to a function and the
corresponding parameters in the function definition

5.17 Which of the following is not an indication that a function may be


too complex?
(a) it has a large size
(b) it has a large parameter list
(c) its name is a clear reflection of its function
(d) it performs multiple tasks

5.18 Which of the following code segments does not contain any
errors?
(a)
void printnum (int x)
{
print("%i", x);
return x;
}
(b)
int cube(int s)
{
int s;
return (s * s * s);
}
(c)
double triple(float n) {
return (3 * n);
}
(d)
double circumference (int r)
IPC144 Progress Test #02

return (3.14 * 2 * r);

5.19 int square(int); is an example of a function __________.


a) datatype
b) stereotype
c) prototype
d) proceduretype

5.20 As used in
int square(int);
int is not a(n) __________.
a) data type
b) parameter type
c) return type
d) function prototype

5.21 The type of a parameter whose type is omitted in a function


definition is __________.
a) int
b) double
c) long
d) float

5.22 The most concise notation to use to define function parameters x


and y as double is __________.
a) x, y
b) x, double y
c) double x, y
d) double x, double y

5.23 Placing a semicolon after the right parenthesis enclosing the


parameter list of a function definition is a __________ error.
a) logic
b) syntax
c) fatal runtime
d) nonfatal runtime
IPC144 Progress Test #02

5.24 Which statement is true?


a) The type of every parameter in a function parameter list must be
included.
b) The type of every argument in a function call must be included.
c) It is not incorrect to use the same names for the arguments passed
to a function and the corresponding parameters in the function
definition.
d) Defining a function parameter again as a local variable within the
function is a logic error.

5.25 Which statement is false?


a) Every block is a compound statement.
b) Every compound statement is a block.
c) Blocks can be nested.
d) Compound statements can be nested.

5.26 Which statement is true?


a) Programs should be written as collections of small functions.
b) A function must be no longer than one page.
c) The best engineered functions have many parameters and perform
many distinct tasks.
d) Every function must include an explicit return statement.

5.27 A function prototype does not have to ________.


(a) include parameter names
(b) terminate with a semicolon
(c) agree with the function definition
(d) match with all calls to the function

5.28 A function prototype can always be omitted when a function


________.
(a) is defined before it is first invoked
(b) is invoked before it is first defined
(c) takes no arguments
(d) does not return a value
IPC144 Progress Test #02

5.29 Which statement is false?


a) The compiler uses function prototypes to validate function calls.
b) Prior to ANSI C, C did not include function prototypes.
c) A function prototype tells the compiler the type of data returned by
the function, the number of parameters the function expects to
receive, the types of these parameters and the order in which
parameters of these types are expected.
d) The designers of ANSI C++ borrowed the notion of function
prototypes from the developers of C.

5.30 The forcing of arguments to the appropriate types is commonly


called __________.
a) conversion
b) casting
c) coercion
d) transmogrification

5.31 Each standard library has a corresponding __________.


(a) function
(b) variable type
(c) header file
(d) cd-rom

5.32 Which standard library header file contains function prototypes


for conversions of numbers to text and text to numbers, memory
allocation, random numbers and other utility functions.
a) <stdarg.h>
b) <stdlib.h>
c) <stdutl.h>
d) <stddef.h>

5.33 When arguments are passed by __________, the caller allows the
called function to modify the original variable’s value.
(a) value
(b) reference
(c) both a and b
(d) none of these
IPC144 Progress Test #02

5.34 Which statement is true?


a) When an argument is passed call by reference, a copy of the argu-
ment’s value is made and passed to the called function.
b) With call by reference, changes to the passed value do not affect the
original variable’s value in the calling functions.
c) Call by value should be used whenever the called function does not
need to modify the value of the caller’s original value.
d) Call by value should only be used with trusted called functions that
need to modify the original variable.

5.35 The rand function generates a data value of the type


(a) unsigned int
(b) int
(c) long int
(d) short int

5.37 In the expression


n = a + rand() % b;
(a) b is the shifting value
(b) a is the scaling value
(c) b is equal to the width of the desired range of integers
(d) both (a) and (c)

5.39 Which statement is false?


a) Function rand generates an integer between 0 and MAX.
b) The range of values produced directly by rand is often different
than what is needed in a specific application.
c) The number 6 in the expression rand % 6 is called a scaling
factor.
d) The rand function prototype is in <stdlib.h>.

5.46 Labels are the only identifiers with


(a) function scope
IPC144 Progress Test #02

(b) file scope


(c) block scope
(d) function-prototype scope

5.47 The only identifiers that can be reused elsewhere in a program


without any ambiguity are
(a) global variables
(b) static local variables
(c) those in the parameter list of a function prototype
(d) those in the parameter list of a function definition

5.48 Which statement is false?


a) When we define a local variable in a block it can be referenced only
in that block or in blocks in which that block is nested.
b) Labels are the only identifiers with function scope.
c) Labels can be used anywhere in the function in which they appear,
but can not be referenced outside the function body.
d) Labels are used in switch statements and in goto statements.

5.49 Which is not a scope for an identifier?


a) function scope
b) record scope
c) block scope
d) function-prototype scope

5.50 A recursive function is a function that ________.


(a) returns a double
(b) takes 3 arguments
(c) calls itself
(d) is inside of another function

5.51 What value does function mystery return when called with a
value of 4?
int mystery (int number)
{
if (number <= 1) {
return 1;
IPC144 Progress Test #02

}
else {
return number * mystery(number – 1);
}
}
(a) 1
(b) 24
(c) 0
(d) 4

5.52 Recursion is memory-intensive because ________.


(a) it must occur numerous times before it terminates
(b) previous function calls are still open when the function calls itself
and the arguments of these previous calls still occupy space on the call
stack
(c) many copies of the function code are created
(d) it requires large data values

5.53 Which statement is false?


a) A recursive function is a function that calls itself either directly or
indirectly through another function.
b) A recursive function knows how to solve only one or more base
cases.
c) The recursion step executes after the original call to the function
terminates.
d) In order for the recursion to eventually terminate, each time the
function calls itself with a slightly simpler version of the original prob-
lem, this sequence of smaller and smaller problems must eventually
converge on a base case.

5.56 Recursion is to the base case as iteration is to ________?


(a) the counter
(b) an iteration statement
(c) failure of the loop continuation test
(d) a selection statement
IPC144 Progress Test #02

5.57 All of the following are reasons to use recursion except:


(a) an iterative solution is not apparent
(b) the resulting program is easier to debug
(c) it more naturally mirrors the problem
(d) it maximizes software performance

5.58 Which statement is false?


a) Both recursion and iteration are based on a control statement.
b) Both iteration and recursion involve iteration.
c) Iteration with sentinel-controlled iteration and recursion each
gradually approach termination.
d) Both iteration and recursion can occur infinitely.

5.59 Which of the following statements is true?


(a) The C standard library does not provide a secure random-number
generator.
(b) According to the C standard document’s description of function
rand, “There are no guarantees as to the quality of the random
sequence produced and some implementations are known to produce
sequences with distressingly non-random low-order bits.”
(c) The CERT guideline MSC30-C indicates that implementation-
specific random-number generation functions must be used to ensure
that the random numbers produced are not predictable
(d) All of the above.
IPC144 Progress Test #02

Arrays

6.1 Arrays are data structures consisting of related data items of the
same __________.

a) sort order
b) subscript
c) type
d) element

6.2 Arrays and structures are __________ entities in that they remain the
same size throughout program execution.

a) dynamic
b) automatic
c) register
d) static

6.4 An array is not ________.


(a) a consecutive group of memory locations
(b) indexed by integers
(c) pointer-based
(d) a dynamic entity

6.5 Which of the following is false?


(a) the first element of an array is the zeroth
(b) the last element of an array is the array size - 1
(c) the position number contained within square brackets is called a
subscript
(d) a subscript cannot be an expression.

6.6 An array is a group of memory locations related by the fact that


they all have __________ array name and __________ type.
a) different, different
b) same, different
c) different same
IPC144 Progress Test #02

d) same, same

6.8 Which statement is false?


a) The brackets used to enclose the subscript of an array are not an
operator in C.
b) To refer to a particular element in an array, we specify the name of
the array and the position number of the element in the array.
c) The position number within an array is more formally called a
subscript.
d) “Array element seven” and the “seventh element of an array” do not
mean the same thing. This is a frequent source of off-by-one errors.

6.9 Which statement would be used to define a 10 element integer


array c?
(a) Array c = int[10];
(b) c = int[10];
(c) int Array c[10];
(d) int c[10];

6.10 Which definition tells the computer to reserve 12 elements for


integer array c?
a) c[12] int;
b) int c [11];
c) c[11] int;
d) int c[12];

6.11 Which of the following is not a correct way to initialize an array?


(a) int n[5] = {0, 7, 0, 3, 8, 2};
(b) int n[] = {0, 7, 0, 3, 8, 2};
(c) int n[5] = {7};
(d) int n[5] = {6, 6, 6};

6.12 Constant variables


(a) can be assigned values in executable statements
(b) do not have to be initialized when they are defined
IPC144 Progress Test #02

(c) can be used to specify array sizes, thereby making programs more
scalable
(d) can be used to specify array sizes, but this makes programs harder
to understand

6.13 Referencing elements outside the array bounds


(a) can result in changes to the value of an unrelated variable
(b) is impossible because C checks to make sure it does not happen
(c) is a syntax error
(d) enlarges the size of the array

6.14 Strings can not


(a) be initialized using string literals
(b) end in a character other than the null character
(c) be initialized with initializer lists
(d) be treated as arrays of characters

6.15 Assume string1 is a character array. Which of the following


operations does not produce a string?
(a) string1[] = "test";
(b) string1[] = {'t', 'e', 's', 't', '\0'};
(c) string1[] = {'t', 'e', 's', 't'};
(d) string1[] = " ";

6.16 Suppose a program contains the code


for (i = 1; i < = 10; i++) {
n[i] = 0;
}
Which statement about this code must be true?
a) It contains an off-by-one error.
b) It contains a syntax error.
c) It is initializing the first 10 elements of an array.
d) It is initializing successive elements of an array.

6.17 What’s wrong with this code?


int[] = (1, 2, 3, 4, 5);
a) The array size must be specified in the square brackets.
IPC144 Progress Test #02

b) The parentheses should be square brackets.


c) The square brackets should be curly braces.
d) The parentheses should be curly braces.

6.18 If there are fewer initializers than elements in the array, the
remaining elements are __________.
a) deleted
b) ignored
c) initialized to empty
d) initialized to zero

6.19 Which statement is true?


a) Arrays are automatically initialized to zero.
b) To initialize all array elements to zeros, the array definition must
explicitly initialize each element to zero.
c) Array elements can be initialized to zero by the array definition
only at compile time.
d) Definitions for automatic arrays initialize the arrays at execution
time.

6.20 The following array definition


int n[5] = {32, 27, 64, 18, 95, 14};
a) is correct
b) causes a syntax error because there are only five initializers and six
array elements.
c) causes a logic error because there are only five elements but there
are six initializers.
d) causes a syntax error because there are six initializers but only five
array elements.

6.21 Which statement is true?


a) A symbolic constant is an identifier that is replaced with
replacement text by the C preprocessor after the program is compiled.
b) Using symbolic constants to specify array sizes makes programs
run faster.
c) Preprocessor directives are not C statements.
d) The #define preprocessor directive must end in a semicolon.
IPC144 Progress Test #02

6.22 Which statement is true?


a) Assigning a value to a symbolic constant in an executable statement
is a syntax error.
b) A symbolic constant is a variable.
c) Space is reserved for both symbolic constants and variables that
hold values at execution time.
d) Only uppercase letters can be used for symbolic constant names.

6.23 Which statement is true regarding the statement


++frequency[responses[answer]];
a) This statement increases the appropriate frequency counter
depending on the value of responses[answer].
b) This statement increases the appropriate answer counter
depending on the value of frequency[responses].
c) This statement increases the appropriate responses counter
depending on the value of frequency[answer].
d) This statement produces a syntax error because subscripts cannot
be nested.

6.24 Which statement is false?


a) C has no built-in bounds checking to prevent the computer from
referring to an array element that does not exist.
b) The programmer is responsible for implementing array bounds
checking.
c) Referring to an element outside the array bounds is a syntax error.
d) Referring to an element outside the array bounds is a logic error.

6.25 Which statement is false?


a) The string termination character is called the null character.
b) The string “string” actually occupies 7 characters in memory.
c) The character representation of the last character in memory of a
string is ‘\0’.
d) A character array representing a string should be defined as large
as the actual number of characters in the string minus the terminating
character; C automatically provides the space for the terminating
IPC144 Progress Test #02

character.

6.26 The definition


char string1[] = "first";
is equivalent to:
a) character string1[] = {'f', 'i', 'r', 's', 't', '\
0'};
b) char string1 = {'f', 'i', 'r', 's', 't', '\0'};
c) char string1[] = {'f', 'i', 'r', 's', 't'};
d) char string1[] = {'f', 'i', 'r', 's', 't', '\0'};

6.27 Which statement is false?


a) Function scanf reads characters into memory from the keyboard
until the first input whitespace character is encountered.
b) Function scanf can write beyond the boundary of the array into
which input is being placed.
c) Function printf does not care how large the array it is printing is.
d) When using scanf, you must always precede with the & operator
the name of each variable into which inputs are being placed.

6.29 Unless otherwise specified, entire arrays are passed __________ and
individual array elements are passed __________.
(a) call-by-value, call-by-reference
(b) call-by-reference, call-by-value
(c) call-by-value, call-by-value
(d) call-by-reference, call-by-reference

6.30 Which of the following is false about a function being passed an


array?
(a) it knows the size of the array it was passed
(b) it is passed the address of the first element in the array
(c) it is able to modify the values stored in the array
(d) all of the above are true

6.31 To prevent modification of array values in a function,


(a) the array must be defined static in the function.
(b) the array parameter can be preceded by the const qualifier.
IPC144 Progress Test #02

(c) a copy of the array must be made inside the function.


(d) the array must be passed call-by-reference.

6.32 To pass an array to a function, specify


a) the name of the array without any brackets.
b) the name of the array preceded by an empty pair of brackets.
c) the name of the array followed by a pair of brackets including the
size of the array.
d) the name of the array followed by a pair of brackets including a
number one less than the size of the array.

6.33 Which statement is false?


a) C automatically passes arrays to functions using simulated call by
reference.
b) When C passes an array to a function, the called function normally
can modify the element values in the caller’s original array.
c) The name of an array is actually the address of the first element of
the array.
d) When an array is passed in a function call, the calling function
knows precisely where in the called function’s memory the passed
array is.

6.35 Which statement is true?


a) Entire arrays are passed simulated call by reference and individual
array elements are normally passed simulated call by reference.
b) Entire arrays are passed simulated call by reference and individual
array elements are normally passed call by value.
c) Entire arrays are passed call by value and individual array elements
are normally passed simulated call by reference.
d) Entire arrays are passed call by value and individual array
elements are normally passed call by value.

6.36 Which statement about bubble sort is true?


(a) a maximum of n passes are needed to sort the array, where n is the
number of elements
(b) swapping values requires two assignments
IPC144 Progress Test #02

(c) performance is maximized


(d) the algorithm is very simple compared to other sorting procedures

6.37 Which statement about the bubble sort is false?


a) It is easy to program.
b) It is a high-performance sort.
c) It compares only adjacent elements with one another.
d) The bubble sort compares successive pairs of elements.

6.38 A bubble sort of 1000 elements requires a maximum of __________


passes.
a) 1001
b) 1000
c) 999
d) 998

6.43 The binary search technique


(a) is better suited to small arrays
(b) is better suited to unsorted arrays
(c) can only be used on a sorted array
(d) is slower than a linear search

6.44 The maximum number of comparisons needed for the binary


search of a 2000 element array is
(a) 9
(b) 15
(c) 11
(d) 14

6.45 Which of these is generally thought of as a high-performance


technique?
a) bubble sort
b) linear search
c) binary search
d) iteration
IPC144 Progress Test #02

6.46 Which of the following statements is false?


a) The linear searching method works well for small arrays.
b) The linear searching method works well for unsorted arrays.
c) The binary search algorithm eliminates from consideration one half
of the elements in a sorted array after each comparison.
d) The binary search terminates only when the search key is equal to
the middle element of a subarray.

6.47 A sorted array of a million elements can be searched by a binary


search in __________ or fewer comparisons.
a) 10
b) 20
c) 30
d) 999,999

6.48 A two-dimensional array element incorrectly referenced as a[x,


y] is actually evaluated as
(a) a[x][y]
(b) a[y]
(c) a[x]
(d) a[0]

6.49 Given the following definitions, what is the value of b[1][0]?


int b[2][2] = {{1}, {3, 4}};
(a) 0
(b) 1
(c) 3
(d) this isn’t a valid definition

6.50 Which of the following does not initialize all of the array
elements to 0?
(a)
int b[2][2];
b[0][0] = b[0][1] = b[1][0] = b[1][1] = 0;
(b) int b[2][2] = {0};
(c)
IPC144 Progress Test #02

int b[2][2];
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
b[i][j] = 0;
}
}
(d) all of the above initialize all of their elements to 0.

6.51 Which statement is false about multidimensional arrays?


a) C supports multidimensional arrays.
b) A common use of multidimensional arrays is to arrange data into
tables consisting of rows and columns.
c) To identify a particular table element requires two indices.
d) Every ANSI C system can support arrays with as many indices as
the programmer chooses.

6.52 An array containing 3 columns and 4 rows is typically referred to


as a __________.
a) 12-element array
b) 3-by-4 array
c) 13-element array, because of the zero element
d) 4-by-3 array

6.53 Which initialization is not performed by the following definition?

int b[2][2] = {{1}, {3, 4}};

a)b[0][0] is set to 1
b) b[0][1] is set to 1
c) b[1][0] is set to 3
d) b[1][1] is set to 4

You might also like