Betrachten Sie das unten angegebene C-Programm:

#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);
  
} 

Welcher Wert wird ausgegeben, wenn dieses Programm ausgeführt wird?
(A) 9
(B) 8
(C) 7
(D) 6

Antwort: (C)
Erklärung: Wenn Sie sorgfältig nach der Schleife suchen, werden Sie feststellen, dass sie der Variablen sum einen Wert in der if-Bedingung zuweist und sie in der else-Bedingung erhöht Kondition. Bei weiterem Nachdenken wäre klar, dass diese Schleife die Summe der ansteigenden Teilfolge positiver ganzer Zahlen in der Summenvariable und das Maximum der Summe in der Maxsumme speichert. Daher wird maxsum – maximale Summe der steigenden Teilfolge positiver Ganzzahlen ausgedruckt, wenn dieses Programm ausgeführt wird, was 3 + 4 = 7 ist.

Diese Lösung wird von Vineet Purswani beigetragen

//Ausgabe ist 3+4 =7 {für || wenn das 1. Argument wahr ist, wird das 2. Argument nicht berechnet, und wenn das 1. Argument falsch ist, wird das 2. Argument berechnet}

Eine andere Lösung

Wenn ich = 1

-> i==0 ist falsch, aber a[i] maxsum) ist wahr, da sum=2 und maxsum=0.Also maxsum=2. Summe = (a [i] > 0) ? a [i] : 0; , summe=0 da a[i]<0.

Wenn ich = 2

-> i==0 ist falsch, a[i] maxsum) ist falsch, da sum=0 und maxsum=2.Da sum = (a [i] > 0) ? a [i] : 0; , summe=0 da a[i]<0.

Wenn ich = 3

-> i==0 ist falsch , a[i]<0 ist falsch und a [i] < a [i – 1] ist falsch, also ist Bedingung (1) falsch. Nun summiere += a [i] = 3.

Wenn i=4

-> i==0 ist falsch , a[i]<0 ist falsch und a [i] < a [i – 1] ist falsch, also ist Bedingung (1) falsch. Nun summiere += a [i] = 7.

Wenn i=5

-> i==0 ist falsch , a[i]<0 ist falsch und a [i] maxsum ist wahr, da sum=7 und maxsum=2, also maxsum=7.Since sum =

(a [i] > 0) ? a [i] : 0, also sum=2 da a[5]>0.

Diese Lösung wird von nirmal Bharadwaj
Quiz dieser Frage beigetragen

Achtung Leser! Hören Sie jetzt nicht auf zu lernen. Üben Sie die GATE-Prüfung lange vor der eigentlichen Prüfung mit den fachbezogenen und allgemeinen Quizfragen, die im GATE-Testreihenkurs verfügbar sind .

Lernen Sie alle GATE CS-Konzepte mit kostenlosen Live-Kursen auf unserem YouTube-Kanal kennen.