Basis van programmeren (pseudocode traceren)

Het volgende programma kopieert de elementen van de tweedimensionale array m met 4 rijen en 5 kolommen naar de array b met 20 elementen. m[i, j] is het element in rij i, kolom j, en indexen beginnen bij 1. Op welke index van b komt m[3, 2] terecht?

integer: k ← 0
for (i from 1 to 4 step 1)
  for (j from 1 to 5 step 1)
    k ← k + 1
    b[k] ← m[i, j]
  endfor
endfor
  1. A7
  2. B11
  3. C12
Antwoord en toelichting tonen

Antwoord: C. 12

De buitenste i is de rij en de binnenste j de kolom, dus b wordt gevuld met de 5 elementen van rij 1, dan de 5 van rij 2, dan rij 3 (rij-voor-rijvolgorde, row-major). Vóór m[3, 2] komen de 10 elementen van rij 1 en 2 en m[3, 1], dus k = 10 + 2 = 12. In het algemeen is de index (i − 1) × 5 + j. Wie de formule voor indexen vanaf 0, (i − 1) × 5 + (j − 1), ongewijzigd gebruikt, krijgt 11, één te weinig.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren (pseudocode traceren)

  1. Array-indexen beginnen bij 1, en + plakt strings aan elkaar. Wat is de waarde van r nadat het volgende programma is uitgevoerd?
  2. De volgende functie isPal geeft true terug als de tekens in de stringarray s van voren en van achteren gelezen hetzelfde zijn (een palindroom). Array-indexen beginnen bij 1. Wat moet er op de plaats van 【a】 in het programma staan?
  3. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Wat is de retourwaarde als de volgende functie f wordt aangeroepen als f(9087)?
  4. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Wat is de retourwaarde als de volgende functie toBin wordt aangeroepen als toBin(12)?
  5. Het volgende programma trekt de twee gehele getallen a en b van elkaar af tot ze gelijk zijn. Wat is de waarde van k nadat het is uitgevoerd?