È dato il seguente programma:
#includeint vett[10]; void scambia(int *a, int *b) { int c; c=*a; *a=*b; *b=c; } main() { int i; for(i=0; i < 10; i++) vett[i]=i; for(i=9; i >= 0; i--) scambia(&vett[i], &vett[i%3]); for(i=0; i < 10; i++) printf("%d ", vett[i]); } Cosa viene visualizzato a video dall'esecuzione di main()?
Soluzione: 3 4 5 6 7 8 9 1 2 0
Il primo for generea la sequenza 0...9
0 1 2 3 4 5 6 7 8 9
Il secondo for scambia ogni elemento alla posizione i con il corrispondente alla posizione i%3
scambia(9, 0): 9 1 2 3 4 5 6 7 8 0
scambia(8, 2): 9 1 8 3 4 5 6 7 2 0
scambia(7, 1): 9 7 8 3 4 5 6 1 2 0
scambia(6, 0): 6 7 8 3 4 5 9 1 2 0
scambia(5, 2): 6 7 5 3 4 8 9 1 2 0
scambia(4, 1): 6 4 5 3 7 8 9 1 2 0
scambia(3, 0): 3 4 5 6 7 8 9 1 2 0
scambia(2, 2): 3 4 5 6 7 8 9 1 2 0
scambia(1, 1): 3 4 5 6 7 8 9 1 2 0
scambia(0, 0): 3 4 5 6 7 8 9 1 2 0
Il terzo for visualizza gli elementi
3 4 5 6 7 8 9 1 2 0