Вопрос, который вы написали, не очень понятен, поскольку здесь есть несколько циклов. Возможно, это проблема с оригинальным вопросом, который вы получили, поэтому, возможно, не ваша ошибка (a) .
Если вы сделаете небольшое изменение в коде чтобы распечатать, когда происходят определенные события, вы увидите подробности:
#include <stdio.h>
int main(void) {
int j = 2;
printf("initial j: %d\n", j);
for (int i = 1; i < 100; i = i * 2) {
printf("LOOP-I i: %d\n", i);
j = j - 1;
printf("decremented j: %d\n", j);
while (j < 25) {
j = j + 5;
printf("LOOP-J plus5'ed j: %d\n", j);
}
}
return 0;
}
Вывод этого (аннотирован справа с l oop отсчетами):
iLoop jLoop
----- -----
initial j: 2
LOOP-I i: 1 1
decremented j: 1
LOOP-J plus5'ed j: 6 1
LOOP-J plus5'ed j: 11 2
LOOP-J plus5'ed j: 16 3
LOOP-J plus5'ed j: 21 4
LOOP-J plus5'ed j: 26 5
LOOP-I i: 2 2
decremented j: 25
LOOP-I i: 4 3
decremented j: 24
LOOP-J plus5'ed j: 29 6
LOOP-I i: 8 4
decremented j: 28
LOOP-I i: 16 5
decremented j: 27
LOOP-I i: 32 6
decremented j: 26
LOOP-I i: 64 7
decremented j: 25
Существует семь LOOP-I
выходов и шесть LOOP-J
выходов - последний немного отличается от вашего предположения о пяти, так как уменьшение j
в пределах i
l oop еще больше понижает его до 25
так что j
l oop будет повторяться в последний раз.
Если ответ, который они дают, равен семи, то они почти наверняка говорят о внешнем i
l oop. С точки зрения пуриста, ответ на вопрос "Сколько раз будет это oop?" ясно 13 (семь для i
l oop и шесть для j
один).
(a) Однако я подозреваю, что вы неправильно поняли вопрос. Из (не совсем полного) изображения, которое вы разместили (внутри границы ниже), и обоснованного предположения относительно остальной части вопроса, он, похоже, задает вопрос:
+---------------------------------------------+
| Here are a few loops. Write down if each lo|op will
| eventually end. If it's going to end, how ma|ny
+---------------------------------------------+
times will it loop?
Другими словами, он хочет, чтобы вы проанализировали каждый l oop, и в этом случае два ответа будут да / семь для внешнего i
l oop и да / шесть для внутренний j
один.