2005 – 4

Cosa stampa il seguente programma?

#include 

int funzione(int arr[], int dim) 
{
   int i=0;
   int t=0;
   if(dim%2 == 1) 
   {
      while(i < dim)
      {
         t=arr[i];
         arr[i]=arr[dim-i-1];
         arr[dim-i-1]=t;
         i=i+1;
      }
   }
   else 
   {
      while(i < dim/2)
      {
         t=arr[i];
         arr[i]=arr[dim-i-1];
         arr[dim-i-1]=t;
         i=i+1;
      }
   }
   return arr[0];
}

main() 
{
   int arr1[10]={1,2,3,4,5,6,7,8,9,10};
   int arr2[11]={1,2,3,4,5,6,7,8,9,10,11};
   int a=funzione(arr1, 10);
   int b=funzione(arr2, 11);
   printf("a=%d,b=%d\n", a, b);
}

Risposte:

  1. a=10, b=1
  2. a=1, b=1
  3. a=10, b=11
  4. a=1, b=11

Soluzione: a (a=10, b=1)


Se la lunghezza del vettore è pari scambia ogni elemento fino a quello centrale con il suo simmetrico, il vettore viene ribaltato, il primo valore è 10.
Se la lunghezza del vettore è dispari scambia ogni elemento, dal primo all'ultimo, con il suo simmetrico, il vettore rimane inalterato, il primo valore è 1.