2015 – 7

È dato il seguente programma:

#include 
int main() 
{
   int mat[10][10][10];
   int i,j,k;
   for(i=0; i < 10; i++)
   for(j=0; j < 10; j++)
   for(k=0; k < 10; k++)
      mat[i][j][k]=i+j+2*k;
   for(i=0; i < 10; i++)
      printf(" %d",mat[9-i][9-i][9-i]);
   return 0;
}

Cosa viene visualizzato a video dall'esecuzione del programma?


Soluzione: 36 32 28 24 20 16 12 8 4 0.


Il primo blocco di for() inizializza la matrice mat con 10x10x10=10.000 valori dati dalla formula i+j+2*k...

Il ciclo for() successivo visualizza soltanto 10 valori che possono essere calcolati facilmente

  • i=0, mat[9-0][9-0][9-0]=mat[9][9][9]=9+9+2*9=4*9=36
  • i=1, mat[9-1][9-1][9-1]=mat[8][8][8]=8+8+2*8=4*8=32
  • ...
  • i=9, ..., 4*0=0

Si tratta dei multipli di 4 in ordine decrescente.