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:
- 6 9 4 5 2
Il valore di bit è ora 0- 5 1 2 3 4
Il valore di bit è ora 1- 6 5 4 3 2
Il valore di bit è ora 0- 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
- modifica i valori di posizione pari
{1, 2, 3, 4, 5} --> {1, 2, 5, 4, 9} - restituisce l'ultimo valore di i (dim): 5
- non modifica il valore di bit perché il passaggio del parametro è per valore...
La funzione main() visualizza
- il valore di ritorno di F(): 5
- i valori in V con indice da 4 a 1: 9 4 5 2
- il messaggio: "il valore di bit e' ora 5"