2006 – 5

Cosa stampa il seguente programma, con input 5?

int main()
{
   float x,y,z;
   x=0;
   y=0;
   scanf("%f", &z);

   do
   {
      x=x+1;
      y=y+1/x;
   }
   while(!(y > z));

   printf ("%f\n",x);
}

Risposte:

  1. 5
  2. 12
  3. 25
  4. nessuna delle precedenti.

Soluzione: d (nessuna delle precedenti).


Il programma calcola la somma

1+1/2+1/3+1/4+…

finché non raggiunge il valore 5 e visualizza quanti valori ha dovuto sommare, 83.

La crescita è molto lenta: calcolando la somma fino a 25 addendi si ottiene 3.81…

  1. 5: 1+1/2+1/3+1/4+1/5 = 2.283…
  2. 12: 1+…+1/12 = 3.103…
  3. 25: 1+…+1/25 = 3.815…
  4. 83: 1+…1/83 = 5.002…