Hola Enzo,
Tenés razon en que el código de b también funciona y da la solución correcta para d. Pero hay una diferencia fundamental entre ambas partes: en d) se asume que los elementos del vector son "no negativos". Esto implica que si al recorrer el vector te encontrás un 0 ya podés parar, porque no vas a encontrar un no negativo menor. Es un tema de eficiencia computacional. Quizá el primer elemento ya es 0, ¿para qué recorrerlo todo? Entonces, nosotros en el curso controlamos que se den cuenta de eso.
Pregúntense: ¿Es mejor resolverlo con un FOR o con un WHILE? Por ejemplo, si el problema obliga a recorrer todo el vector (sumar los elementos de un vector), entonces queremos que se den cuenta y utilicen un FOR. Por otra parte, si la iteración puede detenerse en cualquier momento porque se cumple la condición deseada, se utiliza WHILE, así en cada iteración se controla si se cumplió la condición (en este caso si el vector contiene un 0).
Esto lo controlaremos en los parciales y en los exámenes. Es más, cuando pensamos las letras procuramos que esté más o menos balanceada la cantidad de ejercicios que se resuelvan usando FOR y usando WHILE. Quitamos una cantidad de puntos importante si usan WHILE pudiendo usar FOR o al revés.
En conclusión, es buena idea que en cada ejercicio te preguntes si se resuelve con FOR o con WHILE (o con qué combinación de ambos).
Espero que esto les aclare el panorama. En los prácticos siempre hacemos hincapié en este punto, y en el teórico también. Vean los videos si no vienen a clase.
saludos,
Eduardo