Considere el programa C dado a continuación:
#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); }
¿Cuál es el valor impreso cuando se ejecuta este programa?
(A) 9
(B) 8
(C) 7
(D) 6
Respuesta: (C)
Explicación: si busca el ciclo cuidadosamente, notará que asigna la variable de suma a algún valor en la condición if y lo incrementa en el else condición. Pensándolo mejor, quedaría claro que este bucle almacena la suma de la subsecuencia creciente de enteros positivos en la variable suma y el máximo de la suma en la suma máxima. Por lo tanto, maxsum: la suma máxima de la subsecuencia creciente de enteros positivos se imprimirá cuando se ejecute este programa, que es 3 + 4 = 7.
Esta solución es aportada por Vineet Purswani
//la salida será 3+4 =7 {para || si el primer argumento es verdadero, el segundo argumento no se calculará y si el primer argumento es falso, el segundo argumento se calculará}
Otra solución
cuando i=1
-> i==0 es falso, pero a[i] maxsum) es verdadero, ya que sum=2 y maxsum=0. Entonces maxsum=2. suma = (a [i] > 0) ? una [yo] : 0; , suma=0 ya que a[i]<0.
cuando i=2
-> i==0 es falso, a[i] maxsum) es falso, ya que sum=0 y maxsum=2.Since sum = (a [i] > 0) ? una [yo] : 0; , suma=0 ya que a[i]<0.
cuando i=3
-> i==0 es falso, a[i]<0 es falso y a [i] < a [i – 1] es falso, por lo que la condición (1) es falsa. Ahora suma += a [i] = 3.
cuando i=4
-> i==0 es falso, a[i]<0 es falso y a [i] < a [i – 1] es falso, por lo que la condición (1) es falsa. Ahora suma += a [i] = 7.
cuando i=5
-> i==0 es falso, a[i]<0 es falso y a [i] maxsum es verdadero, ya que sum=7 y maxsum=2, entonces maxsum=7. Dado que sum =
(a [i] > 0) ? a [i] : 0, entonces suma=2 ya que a[5]>0.
Esta solución es aportada por nirmal Bharadwaj
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA