Рубрики

ВОРОТА | Gate IT 2008 | Вопрос 80

Рассмотрим фрагмент кода, написанный на C ниже:

void f (int n)

{

    if (n <= 1)  {

        printf ("%d", n);

    }

    else {

        f (n/2);

        printf ("%d", n%2);

    }

}

Какая из следующих реализаций выдаст тот же вывод для f (173), что и код выше?
P1

void f (int n)

{

    if (n/2)  {

        f(n/2);

    }

    printf ("%d", n%2);

}

P2

void f (int n)

{

    if (n <=1)  {

        printf ("%d", n);

    }

    else {

        printf ("%d", n%2);

        f (n/2);

    }

}

(A) как P1, так и P2
(B) только P2
(C) только P1
(D) Ни P1, ни P2

Ответ: (с)
Объяснение:

Здесь, в основном, функция f печатает двоичное представление числа.
функция f1 также печатает двоичное представление числа
Функция f2 печатает двоичное представление, но в обратном порядке.
Выходные данные: 10101101
Выход f1: 10101101
Выход f2: 10110101

Таким образом, ответ — вариант (C), который является только P1.

Это решение предоставлено Анил Сайкришна Деварасетты .

Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | Gate IT 2008 | Вопрос 80

0.00 (0%) 0 votes