3.15. Multiple Choice Exercises¶
Answer the following Multiple Choice questions to assess what you have learned in this chapter.
3.0
-
Its correct to think that your GPA will be truncated, but what else happens when you convert from
int
todouble
? 3
-
Converting to an
int
always truncates, so I do not recommend using type conversions to build your resume… especially if you’re close to4.0
. 4.0
-
Converting to an int will change your GPA, but not in the direction that you were hoping for… what else happens when you convert from
int
todouble
? 4
-
Converting to an int will change yor GPA, but not in the direction that you were hoping for.
Error!
-
No errors here! Type conversions are perfectly legal in C++!
Q-1: You want to spice up your resume before the career fair, so you decide to update your GPA using the program below. What is the GPA that you will have on display for future employers?
#include <iostream>
int main() {
double gpa = 3.52;
int updated_gpa = int(gpa);
std::cout << "GPA: " << updated_gpa;
}
3.14159265358979323846
-
If
x
were a double, C++ would automatically round the value of pi to 15 decimal places. 3.142
-
If
x
were a double, C++ would automatically round the value of pi to 15 decimal places. 3.0
-
Automatic type conversion will round the value of pi down to the nearest integer, but what else happens when we convert a
double
to anint
? 3
-
The value of x should be 3, since automatic type conversion will round the value of pi down to the nearest integer.
Error!
-
Whenever we use math functions, we must include the
<cmath>
header file.
Q-2: What is the value of x after the program executes?
#include <iostream>
int main() {
int x = acos(-1);
}
a
-
C++ performs automatic type conversion to truncate 1.5 to 1.
b
-
Since
a = 1
, we know thatb = 2.5
, which is a non-zero decimal. c
-
c
is adouble
and has a non-zero decimal. d
-
C++ performs integer division which truncates
1/5
. The value will be stored as0
, not0.2
. e
-
c
squared may have a non-zero decimal, but automatic type conversion will truncate it before storing the value ine
. f
-
int(c)
truncatesc
before storing the value inf
.
Q-3: Multiple Response Select all variables that have a non-zero value after the decimal place. (3.1 has a non-zero value, while 3.0 does not)
int main() {
int a = 1.5;
double b = a + 1.5;
double c = 2.4;
double d = 1/5;
int e = c * c;
double f = int(c);
}
print_hellow_world () {
-
This declaration is missing a type.
string palindrome (word) {
-
The function’s parameter is missing a type.
int mult (int a, int b) {
-
Correct! The declaration has a type, empty parentheses, and an open curly brace.
char shift_three (char letter)
-
This declaration is missing an open curly brace
{
. void give_compliment () {
-
Correct! The declaration has a type, empty parentheses, and an open curly brace.
string friend (string name) {
-
friend
is a reserved keyword in C++.
Q-4: Multiple Response Which of the following would work as the first line of a function definition?
"You are awesome!"
-
The
give_compliment
function is not called inmain
. "You suck!"
-
The
give_insult
function doesn’tcout
anything. Nothing is printed.
-
Correct!
give_insult
doesn’tcout
anything. Error!
-
There are no errors with this program!
Q-5: What is printed when the following code runs? Are there any errors?
#include <iostream>
using namespace std;
void give_compliment () {
cout << "You are awesome!";
}
void give_insult () {
insult = "You suck!";
}
int main () {
give_insult ();
}
"Monica is best friends with Rachel"
-
Correct! Although the function definition has
a << " is best friends with " << b
, we call the function with variableb
as argumenta
and variablea
as argumentb
. "Rachel is best friends with Monica"
-
You seem to be confusing your arguments and parameters!
a is best friends with b
-
The function
couts
the values of the variables, not their names! b is best friends with a
-
The function
couts
the values of the variables, not their names! Error!
-
There are no errors with this program!
Q-6: Rachel and Monica are best friends. They write a function
called best_friends
so that they announce this fact to the
rest of their friends. What is printed when they run the code
below? Are there any errors?
#include <iostream>
#include <string>
void best_friends (string a, string b) {
std::cout << a << " is best friends with " << b;
}
int main () {
std::string a = "Rachel";
std::string b = "Monica";
best_friends(b, a);
}
hello, Hannah!!!
-
Correct! The string “Hannah” is assigned to the variable
louise
, then the value oflouise
is assigned to the variableanna
. Whengoodbye (anna)
runs,anna
has the value “Hannah”. hello, anna!!!
-
The function
couts
the value of the variableanna
not the variable name! hello, Anna!!!
-
Is
"Anna"
still the value ofanna
? hello, Louise!
-
The
goodbye
function adds extra exclamation points. hello, Louise!!!
-
We assigned the value of
louise
toanna
. Is"Louise"
the value oflouise
? Error!
-
There are no errors with this program!
Q-7: What is printed when the following code runs? Are there any errors?
#include <iostream>
#include <string>
void greeting (string name) {
std::cout << "hello, " << name << "!";
}
void goodbye (string name) {
greeting (name);
std::cout << "!!";
}
int main () {
std::string hannah = "Hannah";
std::string anna = "Anna";
std::string louise = hannah;
hannah = anna;
anna = louise;
goodbye (anna);
}
order_food(a, c);
-
Correct!
a
is a string andc
is an int. order_food(b, d);
-
Correct! Automatic type conversion will convert d to an
int
. order_food(e, c);
-
e
has a character value, and this function takes a string. order_food(a, d);
-
Correct! Automatic type conversion will convert d to an
int
. order_food(c, a);
-
You have to input your arguments in the correct order.
Q-8: Multiple Response Which of the following are legal function
calls of order_food
?
#include <iostream>
#include <string>
using namespace std;
void order_food (string food, int quantity) {
cout << "I'll have " << quantity << " " << food;
}
int main () {
string a = "wings";
string b = "sliders";
int c = 3;
double d = 8.64;
char e = 'p';
}
a
-
'a'
is no longer the value ofa
, and the function would print it more than once. Hint: think about the type ofa
. f
-
'f'
is the value of a, but the function would print it more than once. Hint: think about the type ofa
. aa
-
'a'
is no longer the value ofa
. Hint: think about the type ofa
. ff
-
Hint: think about the type of
a
. Error!
-
print
takes a string, not a character, as an argument.
Q-9: What is printed when the following code runs? Are there any errors?
#include <iostream>
#include <string>
using namespace std;
void print (string w) {
cout << w << w;
}
int main () {
char a = 'a' + 5;
print (a);
}
1 parameter, 3 local variables
-
Remember, the parameters are declared in the function definition, and the local variables are declared inside of the function.
2 parameters, 4 local variables
-
You can declare multiple variables at once! Also, remember that local variables are declared inside of the function.
2 parameters, 1 local variables
-
You can declare multiple variables at once!
3 parameters, 1 local variable
-
a
,b
, andc
are parameters declared in the function definition.d
is a local variable declared inside of the function. 3 parameters, 4 local variables
-
Remember that local variables are declared inside of the function.
Q-10: How many local variables and parameters does mult
have?
void mult (int a, int b, int c) {
int d = 7;
cout << a * b * c * d;
}
6 calls
-
Take into account that
weekend
only callsparty
if a conditional is true! 2 calls
-
weekend
can also call the functionparty
4 calls
-
Correct! two calls by
main
and two calls byweekend
3 calls
-
One invocation of
weekend
callsparty
twice.
Q-11: How many calls are made to party
during the entire program?
void party (int day_of_month, string address) {
cout <<"party on "<<day_of_month<<" at "<<address<<endl;
}
void weekend(bool available){
if(available) {
party(21,"Big house"); party(22,"CCTC");
} else {
cout<<"sorry I have to study for ENGR101!\n";
}
}
int main(){
bool im_free=false;
party(25,"North campus");
weekend(im_free);
im_free=true;
party(25,"Central campus");
weekend(im_free);
return 0;
}