Рубрики

Язык C | Набор 7

На экзамене GATE CS 2010 были заданы следующие вопросы.

1. Что печатает следующая программа?

#include<stdio.h>

void f(int *p, int *q)

{

  p = q;

 *p = 2;

}

int i = 0, j = 1;

int main()

{

  f(&i, &j);

  printf("%d %d \n", i, j);

  getchar();

  return 0;

}

(А) 2 2
(Б) 2 1
(С) 0 1
(D) 0 2

Ответ (D)
Смотрите ниже f () с комментариями для объяснения.

/ * p указывает на i, а q указывает на j * /

void f(int *p, int *q)

{

  p = q;    / * p также указывает на j сейчас * /

 *p = 2;   / * Значение j теперь изменено на 2 * /

}

2. Какое значение напечатано следующей программой на C?

#include<stdio.h>

int f(int *a, int n)

{

  if(n <= 0) return 0;

  else if(*a % 2 == 0) return *a + f(a+1, n-1);

  else return *a - f(a+1, n-1);

}

  

int main()

{

  int a[] = {12, 7, 13, 4, 11, 6};

  printf("%d", f(a, 6));

  getchar();

  return 0;

}

(А) -9
(Б) 5
(С) 15
(D) 19

Ответ (С)
f () — рекурсивная функция, которая добавляет f (a + 1, n-1) к * a, если * a четное. Если * a нечетно, то f () вычитает f (a + 1, n-1) из * a. Смотрите ниже дерево рекурсии для выполнения f (a, 6).
,

 f(add(12), 6) /*Since 12 is first element. a contains address of 12 */
    |
    |
 12 + f(add(7), 5) /* Since 7 is the next element, a+1 contains address of 7 */
        |
        |
     7 - f(add(13), 4)
              |
              |
           13 - f(add(4), 3)
                     |
                     |
                  4 + f(add(11), 2)
                             |
                             |
                           11 - f(add(6), 1)
                                    |
                                    |
                                 6 + 0

Итак, окончательное возвращаемое значение равно 12 + (7 — (13 — (4 + (11 — (6 + 0))))) = 15

Пожалуйста, смотрите GATE Corner для всех документов / решений / объяснений предыдущего года, учебных планов, важных дат, заметок и т. Д.

Пожалуйста, пишите комментарии, если вы найдете какие-либо неправильные ответы / объяснения, или вы хотите поделиться дополнительной информацией по темам, обсужденным выше.

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

Язык C | Набор 7

0.00 (0%) 0 votes