Рубрики

ВОРОТА | Gate IT 2007 | Вопрос 31

Рассмотрим программу на C, приведенную ниже:

#include <stdio.h>

int main ()    {

    int sum = 0, maxsum = 0,  i,  n = 6;

    int a [] = {2, -2, -1, 3, 4, 2};

    for (i = 0; i < n; i++)    {

            if (i == 0 || a [i]  < 0  || a [i] < a [i - 1])  {

                     if (sum > maxsum) maxsum = sum;

                     sum = (a [i] > 0) ? a [i] : 0;

            }

            else sum += a [i];

    }

    if (sum > maxsum) maxsum = sum ;

    printf ("%d\n", maxsum);

  

Какое значение распечатывается при выполнении этой программы?
(А) 9
(Б) 8
(С) 7
(D) 6

Ответ: (с)
Объяснение: Если вы внимательно посмотрите на цикл, вы заметите, что он присваивает переменную sum некоторому значению в условии if и увеличивает его в условии else. При дальнейшем рассмотрении было бы ясно, что этот цикл хранит сумму возрастающей подпоследовательности натуральных чисел в переменной суммы и максимальную сумму в максимуме. Следовательно, maxsum — максимальная сумма возрастающей подпоследовательности положительных целых чисел будет распечатана при выполнении этой программы, что равно 3 + 4 = 7.

Это решение предоставлено Vineet Purswani

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

ВОРОТА | Gate IT 2007 | Вопрос 31

0.00 (0%) 0 votes