Cosa stampa il seguente programma?
#includeint 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:
- a=10, b=1
- a=1, b=1
- a=10, b=11
- 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.