Basis van programmeren (pseudocode traceren)

Een wachtrij gebruikt de array q (4 elementen van het type string) als ring. head en tail beginnen bij 1. enq(v) voert q[tail] ← v uit en daarna tail ← tail mod 4 + 1; deq() geeft de waarde van q[head] terug en voert daarna head ← head mod 4 + 1 uit. In welk element van q wordt „E” opgeslagen als het volgende programma wordt uitgevoerd?

enq("A")
enq("B")
enq("C")
deq()
deq()
enq("D")
enq("E")
  1. Aq[1]
  2. Bq[3]
  3. Cq[5]
Antwoord en toelichting tonen

Antwoord: A. q[1]

mod wordt vóór + geëvalueerd, dus tail ← tail mod 4 + 1 laat tail rondgaan langs 1 → 2 → 3 → 4 → 1. A, B en C komen in q[1] tot q[3], waarna tail = 4. De twee deq()-aanroepen halen A en B eruit, zodat head = 3. D komt in q[4] en tail keert terug naar 4 mod 4 + 1 = 1, dus E komt in de vrijgekomen q[1]. Een ringvormige wachtrij (ringbuffer) hergebruikt vrijgekomen plaatsen in plaats van elementen naar voren te schuiven.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren (pseudocode traceren)

  1. Het volgende programma drukt een gelinkte lijst af, waarvan de elementen met de array next aan elkaar zijn gekoppeld, door die te volgen vanaf het element met index 1. Array-indexen beginnen bij 1. Een next-waarde van 0 markeert het einde van de lijst. Welke reeks waarden wordt afgedrukt?
  2. Het volgende programma voegt „F”, in val[6], direct na „C” (index 3) in de gelinkte lijst A → C → E → D → B in, waarvan de elementen met de array next aan elkaar zijn gekoppeld, en drukt daarna de lijst af vanaf het element met index 1. Array-indexen beginnen bij 1. Een next-waarde van 0 markeert het einde van de lijst. Wat moet er op de plaats van 【a】 staan, zodat de uitvoer A, C, F, E, D, B is?
  3. De volgende for-lus verhoogt de lusvariabele telkens met 5. Wat is de waarde van c nadat de lus is uitgevoerd?
  4. In het volgende programma evalueert and de rechterkant niet als de linkerkant false is (kortsluitevaluatie). cnt is een globale variabele. Wat is de waarde van cnt nadat het programma is uitgevoerd?
  5. Het volgende programma zoekt de waarde x in de array a met n elementen en zet de index waar die wordt gevonden in i. Array-indexen beginnen bij 1. and en or evalueren hun rechterkant niet als de linkerkant alleen het resultaat al bepaalt. Welke voorwaarde op de plaats van 【a】 leest a[n + 1], buiten de array, als x niet in a voorkomt?