2002 – 6

Cosa stampa il seguente programma?

#include 
#define N 4
#define M 5
int F(int[], int, int);
int main(void)
{
   int V[M] = {1, 2, 3, 4, 5};
   int i, bit = 0;
   printf("%d\t", F(V, M, bit));
   for(i=N; i >= 1; i--)
      printf("%d\t", V[i]);
   printf("\nil valore di bit e' ora %d\n", bit);
   return 0;
}
int F(int vett[], int dim, int bit)
{
   int i;
   for(i=0; i < dim; i+=2)
      vett[i]+=i;
   bit = 1;
   return i;
}

Risposte:

  1. 6 9 4 5 2
    Il valore di bit è ora 0
  2. 5 1 2 3 4
    Il valore di bit è ora 1
  3. 6 5 4 3 2
    Il valore di bit è ora 0
  4. 7 5 3 4 1
    Il valore di bit è ora 0

Soluzione: a (6 9 4 5 2; Il valore di bit è ora 0)


La funzione F

  1. modifica i valori di posizione pari
    {1, 2, 3, 4, 5} --> {1, 2, 5, 4, 9}
  2. restituisce l'ultimo valore di i (dim): 5
  3. non modifica il valore di bit perché il passaggio del parametro è per valore...

La funzione main() visualizza

  1. il valore di ritorno di F(): 5
  2. i valori in V con indice da 4 a 1: 9 4 5 2
  3. il messaggio: "il valore di bit e' ora 5"