2012 – 5

È dato il seguente programma:

#include 
#define N 10

int v[N]={3, 5, 2, 7, 8, 1, 4, 9, 6, 0};

void p() 
{
   int i, t, s;
   do
   {
      s=0;
      for(i=1; i < N-1; i++)
         if(v[i-1] > v[i]) 
         {
            t=v[i-1];
            v[i-1]=v[i];
            v[i]=t;
            s=1;
         }
   }
   while(s == 1);
}

main() 
{
   int i;
   p();
   for(i=0; i < N; i++)
      printf("%d ", v[i]);
}

Cosa viene visualizzato a video dall'esecuzione di main()?


Soluzione: 1 2 3 4 5 6 7 8 9 0


Scorre il vettore e per ogni coppia, se è disordinata, la ordina.
Se ha fatto almeno uno scambio ripete il ciclo.

Ordina il vettore? Sì, ma il ciclo si ferma a N-2, quindi l'ultimo elemento non è coinvolto...