Skip to main content

How To Think Like a Computer Scientist C++ Edition The Pretext Interactive Version

Exercises 7.17 Multiple Choice Exercises

1.

Which variables below is declared as a string type?
int main() {
  int x = 0;
  double y = 4.5;
  string word = "hello";
  string letter = "a";
  char c = 'c';
  bool isPrime = 1;
}

2.

What value should replace the question mark to output the character β€˜p’?
int main() {
  string quote = "Not my tempo.";
  cout << quote[?];
}
  • Remember that indexing begins at 0 in C++.
  • β€˜p’ is located at index 10 in quote.
  • The character β€˜m’ is located at index 4.
  • The character β€œN” is located at index 0.

3.

What is the output of the code below?
int main() {
  string quote = "I love you 3000.";
  int x = 3;
  int y = 3 * x;
  int z = 1;
  if (y > 12) {
    z = z + x + y;
  }
  else {
    z = z + y - x;
  }
  cout << quote[z];
}
  • The value of z is not 0.
  • The value of z is not greater than 11.
  • The value of z is not 3.
  • The final value of z is 7, and β€˜y’ is at index 7 of quote.

4.

What is the output of the code below?
int main() {
  string quote = "Look at me. I'm the captain now.";
  int x = quote.length();
  cout << quote[x];
}
  • -1 is not in quote.
  • x is not the index value of the character β€˜w’.
  • x is not the index value of the last period.
  • β€˜ β€˜
  • It might be logical to think that memory outside of the string is empty space, but there could be leftover junk values.
  • Error, we are indexing out of bounds.
  • x has a value of 32 and there is no index 32 in quote.

5.

What is the output of the code below?
int main() {
  string quote = "With great power comes great responsiblity.";
  size_t n = 0;
  while (n < quote.length()) {
    if (n % 5 == 0) {
      cout << quote[n];
    }
    n++;
  }
}
  • teeest
  • Remember that indexing begins at 0 in C++.
  • Wg reeest
  • If we print out every fifth character, including the first, this is the answer.
  • ith reatpowe coms grat rsponibliy.
  • This is what we would get if we removed every fifth character.
  • With great power comes great responsiblity.
  • Take a look at the conditional in the while loop.

6.

What is the output of the code below?
int main() {
  string quote = "Why so serious?";
  size_t index = quote.find("a");
  cout << index;
}
  • string::npos
  • Since β€˜a’ is not found in quote, the find function returns string::npos.
  • The character at index 0 is β€˜W’.
  • The character at index 8 is β€˜e’.
  • There is no index 15 in quote.

7.

What is the output of the code below?
int main() {
  string quote = "How much wood could a woodchuck chuck if a woodchuck could chuck wood?";
  size_t index = quote.find("wood");
  cout << index;
}
  • Although β€œwood” appears four times in the string, that is not what the find function returns.
  • The index of β€˜w’ in the first β€œwood” is at index 9.
  • Remember indexing begins at 0 in C++.
  • The find function returns the index of the first character of the found string.
  • The find function returns the index of the first character of the found string.

8.

What is the output of the code below?
int main() {
  string quote = "How much wood could a woodchuck chuck if a woodchuck could chuck wood?";
  size_t index = quote.find('w', quote.find("wood") + 1);
  cout << index;
}
  • Take a closer look at the starting index for where we should start looking.
  • After the first β€˜w’, the second β€˜w’ appears at index 22.
  • Take a closer look at the find function and its arguments.
  • Take a closer look at the find function and its arguments.

9.

What is the output of the code below?
int main() {
  string quote = "Life is like a box of chocolates. You never know what you're gonna get.";
  size_t i = 0;
  size_t count = 0;
  while (i < quote.length()) {
    if (quote[i] == 'e') {
      count++;
    }
    i++;
  }
  cout << count;
}
  • Are there any occurences of the letter β€˜e’ in quote?
  • Count the number of β€˜e’s in quote.
  • There are 7 occurences of the letter β€˜e’ in quote.
  • Count the number of β€˜e’s in quote.

10.

What is the output of the code below?
int main() {
  string call = "Marco!";
  string response = "Polo!";
  string output = "call" + "response";
  cout << output;
}
  • Marco! Polo!
  • Take a closer look at the initialization of output.
  • Marco!Polo!
  • Take a closer look at the initialization of output.
  • call response
  • Can we concatenate β€œcall” and β€œresponse”?
  • callresponse
  • Can we concatenate β€œcall” and β€œresponse”?
  • Error!
  • We cannot concatenate native C strings like β€œcall” and β€œresponse”, so this code results in an error.

11.

An error occured while delivering a message. All instances of the letter β€˜s’ got replaced by β€˜X’s. Can you complete the code below to fix this error by selecting the correct line of code to replace the question marks?
int main() {
  string question = "Honey? Where'X my Xuper Xuit?";
  size_t i = 0;
  while (i < question.length()) {
    if (question[i] == 'X') {
      ?????
    }
    i++;
  }
  cout << question;
}
  • question['X'] = 's';
  • The argument in the [] operator should be a position in the string.
  • 's' = question[i];
  • Check the order of your assignment.
  • 'X' = 's';
  • We cannot assign the value of β€˜s’ to β€˜X’.
  • question[i] = 's';
  • This will successfully replace all instances of β€˜X’ with β€˜s’.

12.

What is the output of the code below?
int main() {
  cout << ("butter" < "butterfly");
}
  • butterbutterfly
  • The operator between β€œbutter” and β€œbutterfly” is the < operator, not << .
  • Does β€œbutter” come before or after β€œbutterfly”?
  • β€œbutter” comes before β€œbutterfly” in the dictionary.
  • False
  • In C++, boolean values are outputted as either a 0 or 1.
  • In C++, boolean values are outputted as either a 0 or 1.

13.

What is the output of the code below?
int main() {
   string quote = "Suffering builds character";
   size_t count = 0;
   size_t index = 17;
   while ( index != quote.length() ) {
     if ( quote[index] == 'a' || quote[index] == 'e' ) {
       count = count + index;
     }
     index = index + 1;
   }
   cout << count << endl;
}
  • The code is not counting the number of a’s or e’s after position 17. Rather adding up their indices.
  • The code is not counting the number of a’s or e’s. Rather adding up their indices.
  • Correct! the occurences of β€˜a’ are 19 and 21, while that of β€˜e’ is 24 (after index 17). The total is 64.
  • The first occurence of β€˜e’ is at index 4 so it is not counted.

14.

What is the output of the code below?
int main() {
   string quote = "Its Bond, James Bond";
   size_t index = 1;
   while( index < quote.length() ) {
     quote[index] = 'M';
     index = index * 2;
   }
   cout << quote << endl;
}
  • β€œIMM MondM James Mond”
  • Correct! We change indices 1,2,4,8,16 to M before index becomes > quote.length().
  • β€œIMMMMMMMMMMMMMMMMMMM”
  • We are not increasing index by 1, instead we are doubling it.
  • β€œMMM MondM James Mond”
  • We don’t start at position 0 this time.
  • β€œIMsMBMnM,MJMmMsMBMnM”
  • we are not increasing index by 2, instead we are doubling it.
You have attempted of activities on this page.