2015-06-29 15 views
-11

Почему результат 7 ??? Я не могу найти журнал, если это :(Каков результат следующего кода?

#include <stdio.h> 
main() { 
    int i, j, a = 1, b = 1; 
    for (i = 1; i < 4; i++) 
     for (j = 1; j < 3; j++) 
      a = a + b; 
    printf("a=%d", a); 
} 
+3

почему бы не попробовать себя? –

+1

Почему не использовать отладчик? – Toumash

+0

a начинается с 1, b остается на 1. цикл работает 1..3 x 1..2 == 6 раз. каждый раз приращение на 1 (b фиксировано), поэтому a == 1 + 6 – amdixon

ответ

1

В результате 7, потому что Ь инициализируется как 1 и остается 1 все время. Внешний цикл выполняется 3 раза (1, 2, 3), внутренний цикл выполняется 2 раза (1 и 2), так что есть 6 трасс, где б добавляют к (который инициализируется как 1). 1 + 6 = 7.

2

структура, как показано ниже

- Outer `for` loop 
- inner `for` loop 
    - instruction 

так что «инструкция» (инструкция/блок) будет выполнена внутренняя for времени цикла, для внешнего for количество циклов раз.

Что в основном говорит, добавьте значение b к последнему значению a (возвращающимся способом), чтобы получить текущее значение a. Теперь сделайте это для «внешнего» количества времени, для чего сделайте то же самое для «внутреннего» количества раз.

Внешний for цикл ==> 3 раза,
внутреннего == for цикла> 2 раза

Таким образом, конечное значение = 3*2 (increment) + (initial) = (3*2)*1 + 1 = 7.

1

В таких сценариях вы должны добавить часы и отладить свой код по строкам. Я считаю, что ярлык F11. С уважением, почему вывод вашего кода равен 7 ... Внутренний цикл работает шесть раз. J в два раза - 1, 2, (заканчивается, когда он равен 3), а I - трижды (1, 2, 3, 4 - конец) ... всего 2 X 3 = 6.

Поскольку b «1», вы в основном добавляете номер 1 в шесть раз. Так как началось с '1', выход:

а = 1 + 1 + 1 + 1 + 1 + 1 + 1 = 7

Смежные вопросы