Si consideri il seguente frammento di programma:
main() { int M[3][3][3]; int i, j, k; for(i=0; i < 3; i++) for(j=0; j < 3; j++) for(k=0; k < 3; k++) M[i][j][k]=i+k; for (i=0; i < 3; i++) { for(k=0; k < 3; k++) for(j=0; j < 3; j++) printf("%3d", M[i][j][k]); printf("\n"); } }Quale tra i seguenti insiemi di valori viene visualizzato a video dall'esecuzione di main ()?
Risposte:
- 0 0 0
1 1 1
2 2 2
1 1 1
2 2 2
3 3 3
2 2 2
3 3 3
4 4 4- 0 0 0 1 1 1 2 2 2 1 1 1 2 2 2 3 3 3 2 2 2 3 3 3 4 4 4
- 0 0 0 1 1 1 2 2 2
1 1 1 2 2 2 3 3 3
2 2 2 3 3 3 4 4 4- 0 0 0 1 1 1 2 2 2
0 0 0 1 1 1 2 2 2
0 0 0 1 1 1 2 2 2
Soluzione: c
Dopo il primo triplo for() la matrice contiene i valori dati dalla somma i+k
[0, 1, 2] [0, 1, 2] [0, 1, 2]
[1, 2, 3] [1, 2, 3] [1, 2, 3]
[2, 3, 4] [2, 3, 4] [2, 3, 4]
Il secondo triplo for() visualizza la matrice ma con gli indici j e k invertiti
(i=0) 0 0 0 1 1 1 2 2 2
(i=1) 1 1 1 2 2 2 3 3 3
(i=2) 2 2 2 3 3 3 4 4 4