Przejdź do treści głównej
INF.04Pytanie #281 z 856reprezentacja-algorytmow-i-notacje

Przedstawiona pętla operuje na zmiennej napisowej ciąg. Jej zadaniem jest

Opcje odpowiedzi:
A
od każdego znaku w napisie, który nie jest równy 0, odjąć kod 32
B
zamienić w napisie małe litery na wielkie
Prawidłowa
C
od każdego znaku w napisie odjąć kod 32
D
zamienić w napisie wielkie litery na małe
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: B

Uzasadnienie i szersze wyjaśnienie:

Kluczowe dla zrozumienia tego kodu jest poznanie tablicy kodów ASCII. W standardzie ASCII:

  • Kody małych liter a - z to liczby od 97 do 122.
  • Kody wielkich liter A - Z to liczby od 65 do 90.
  • Różnica między kodem małej litery a odpowiadającej jej wielkiej litery wynosi dokładnie 32 (np. a=97, A=65 -> 97-32=65).

Teraz przeanalizujmy kod:

  • while (ciag[i] != 0) – pętla działa do napotkania znaku null kończącego napis w stylu języka C.
  • if (ciag[i] > 96 && ciag[i] < 123) – warunek ten jest spełniony tylko wtedy, gdy kod ASCII znaku ciag[i] znajduje się w przedziale (96, 123), czyli jest małą literą alfabetu łacińskiego.
  • ciag[i] = (ciag[i] - 32); – od kodu ASCII małej litery odejmowane jest 32, co w efekcie zamienia ją na odpowiadającą jej wielką literę.

Cała pętla ma zatem za zadanie zamienić w napisie małe litery na wielkie.

Dlaczego pozostałe odpowiedzi są nieprawidłowe?

  • A i C: Operacja odjęcia 32 jest wykonywana tylko dla małych liter, a nie dla wszystkich znaków.
  • D: Kod zamienia litery z małych na wielkie, a nie odwrotnie.

Chcesz poćwiczyć całą kwalifikację INF.04?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF04
Reklama

Podobne pytania z działu „Reprezentacja algorytmow i notacje”

Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 13 pytań z tego działu.