W funkcji wypisz(a) kluczowe jest prześledzenie kolejności wykonywania instrukcji w pętli.
1) Liczba iteracji pętli
Pętla ma postać for(i=1; i<6; i++), więc uruchomi się dla i=1,2,3,4,5 (łącznie 5 razy). Warunek i<6 nie dopuszcza i=6.
2) Zmiana wartości a
W każdej iteracji wykonywane jest a++, czyli zwiększenie a o 1 (postinkrementacja; tutaj liczy się fakt, że po tej instrukcji a ma już większą wartość).
3) Warunek wypisania
Następnie sprawdzane jest: (a%2==0) || (a%3==0). Operator % daje resztę z dzielenia, więc warunek oznacza: "a jest parzyste lub a jest podzielne przez 3". Operator || wymaga spełnienia przynajmniej jednego z podwarunków.
4) Przebieg dla wypisz(2)
- Iteracja 1: a=3 → 3%3=0, więc wypisuje 3
- Iteracja 2: a=4 → 4%2=0, więc wypisuje 4
- Iteracja 3: a=5 → nie dzieli się przez 2 ani 3, więc nic
- Iteracja 4: a=6 → dzieli się przez 2 i 3, więc wypisuje 6
- Iteracja 5: a=7 → nie dzieli się przez 2 ani 3, więc nic
Dlatego poprawny wynik to: 3 4 6.
Dlaczego pozostałe odpowiedzi są błędne?
Opcja z "2 …" pomija fakt, że przed sprawdzeniem warunku a jest inkrementowane, więc 2 nie może być wypisane. Opcja z "… 8" zakłada zbyt wiele iteracji lub inną granicę pętli. Opcja "6" ignoruje przypadki, gdy a jest podzielne przez 3 (3) oraz gdy a jest parzyste (4).