Źródło: Arkusze CKE
Pętla przedstawiona w zadaniu działa na zmiennej typu string o nazwie ciag. Jej celem jest:
int i = 0;
while (ciag[i] != 0) {
if (ciag[i] > 96 && ciag[i] < 123) {
ciag[i] = (ciag[i] - 32);
}
i++;
}
Warianty odpowiedzi
-
A
Zamienić w ciągu wielkie litery na małe.
-
B
Zamienić w ciągu małe litery na wielkie.
-
C
Od każdego znaku w ciągu odjąć kod 32.
-
D
Od każdego znaku w ciągu, który nie jest równy 0, odjąć kod 32.
Wyjaśnienie
Spójrzmy na warunki wewnątrz pętli. Kod analizuje wartości ASCII kolejnych znaków napisu.
Warunek ciag[i] > 96 && ciag[i] < 123 wyłapuje znaki o kodach od 97 do 122. W tabeli ASCII są to małe litery alfabetu łacińskiego od 'a' do 'z'.
Następnie wykonywana jest operacja odejmowania 32 od kodu znaku. Przesunięcie o 32 pozycje w dół w tabeli ASCII zmienia małą literę na odpowiadającą jej wielką literę (np. 'a' ma kod 97, a 97 - 32 daje 65, czyli 'A').
Pętla przechodzi po całym ciągu znaków, zamieniając wszystkie małe litery na ich wielkie odpowiedniki.