Test di autovalutazione 8 

Domanda 1 :

Cosa fa il seguente algoritmo , se r e' un numero intero maggiore di 1 ?

1) leggi r;   2) cont <---- 1;   3) cont = r * cont; 4) somma= 1;

5) se (cont <= r)

 { somma <----- somma + cont;  cont <---  cont + 1; }

6) stampa somma;

   stampa  il valore di r

   stampa il valore di ( r +1 ) 

   stampa  la somma dei numeri da 1 fino ad r 

  stampa  i numeri da (1 fino ad r ) + 1

 

Domanda 2 :

Quale e' la  corretta la traduzione in linguaggio C dell'algoritmo della domanda precedente ?

  

 #include<stdio.h> 

main() { int  r , cont = 1, somma;

scanf("%d", r);  cont = r * cont; somma = 1; if( cont <= r){ somma = somma + cont ; cont = cont+1;} printf("\n%d",somma); }

  

 #include<stdio.h> 

main() { int  r , cont = 1, somma;

scanf("%d",&r);  cont = r * cont; somma = 1; if( cont < r){ somma = somma + cont ; cont = cont++;} printf("\n%d",somma); }

  #include<stdio.h> 

main() { int  r , cont = 1, somma;

scanf("%d",&r);  cont = r * cont; somma = 1; if( cont <= r){ somma = somma + cont ; cont = cont++;} printf("\n%d",somma); }

 

 #include<stdio.h> 

main() { int  r , cont = 1, somma;

scanf("%d",&r);  cont = r * cont; somma = 1; if( cont <= r){ somma = somma + cont ; cont = cont+ r;} printf("\n%d",somma); }

 

Domanda 3 :

Quale di questi programmi calcola e stampa la somma dei numeri dispari da 1 fino a 100 ?

#include< stdio.h>

     main () { int cont, sommad=1;

     for (cont=1; cont<=100; cont++) if ((cont%2)!=0) sommad=sommad+cont; printf("\n%d",sommad); }

 

 #include< stdio.h>

     main () { int cont, sommad;

     for (cont=1; cont<=100; cont++) {if ((cont%2)!=0) sommad=sommad+cont; printf("\n%d",sommad); }}

 

 #include< stdio.h>

     main () { int cont, sommad=0;

     for (cont=0; cont<100; cont++) if ((cont%2)==0) sommad=sommad+cont; printf("\n%d",sommad); }

 

  #include< stdio.h>

     main () { int cont, sommad=0;

     for (cont=1; cont<=100; cont++) if ((cont%2)!=0) sommad=sommad+cont; printf("\n%d",sommad); }

 

Domanda 4 :

Quali problemi presenta se ve ne sono il seguente programma?

#include< stdio.h>

main () { int cont, sommap=0;

while ( cont<=100) { if ((cont%2)==0)

sommap=sommap+cont; cont = cont +1 ; } printf("\n%d",sommap); }

 

 manca la inizializzazione del contatore

  il programma e' corretto

  alla variabile sommap va assegnato il valore 1 e non 0

  il test dell' istruzione if deve essere if((cont%2)!=0)

 

Domanda 5 :

Al seguente frammento di diagramma di flusso

cosa manca,  per essere adeguato al calcolo della somma dei primi 10 numeri interi ,nella ipotesi che vi sia un ciclo, che riporta il flusso di esecuzione dal basso verso l'alto ?

 la inizializzazione ad  1 della variabile cont prima del test , l'assegnazione alla variabile somma di somma + cont  dopo il test

 la inizializzazione ad 1 e a 0 delle variabili cont e somma rispettivamente dopo il test, l'assegnazione alla variabile somma di somma + cont dopo il test

 la inizializzazione ad 1 e a 0 delle variabili cont e somma rispettivamente, l'assegnazione alla variabile somma di  cont dopo l' assegnazione della variabile cont di cont +1

 la inizializzazione ad 1 e a 0 delle variabili cont e somma rispettivamente prima del test, l'assegnazione alla variabile somma di somma + cont dopo l'assegnazione a cont di cont+1

 

Domanda  6 :

Identificate gli errori se ve ne sono in ognuna delle seguenti istruzioni :

a) while ( counter <=5){ prodotto==prodotto*counter; counter=counter +1;}

b) if( gender=1) printf("\n woman\n");else printf("\n man");

 

   sono entrambe corrette

   l' istruzione a) e' corretta mentre nell' istruzione b) va tolto lo \n finale

  in a)  l'operatore == va sostituito con =    mentre    

     in b)  l'operatore = va sostituito con ==

  in a) manca la parentesi graffa mentre in b) l'istruzione printf dopo l'else  viene eseguita sempre indipendentemente dalla condizione della istruzione if .

 

Domanda  7 :

Qual' e' la funzione della variabile sommap a destra del segno di = nella istruzione sommap=sommap + cont; vedere domanda 4  .

 Confrontare il suo valore con sommap a primo membro e sommarvi il valore di cont

Si puo' benissimo omettere avendogli assegnato il valore 0, tanto il risultato non cambia

  Mantenere memoria delle  somme parziali dei numeri positivi, ottenute ad ogni iterazione precedente del ciclo while 

Azzerare il valore della variabile nel caso contenesse valori diversi da zero, derivanti da precedenti programmi .

 

Domanda  8 :

Nel pezzo di codice seguente:  a=10; if (a < 10 )printf("\n A" ); else; printf("\n B"); quale/i carattere/i viene/vengono stampati?  se vengono stampati.

 viene stampato  il carattere B

 nessuno dei due 

  viene stampato  il carattere B, poiche' la condizione del test e' falsa e quindi si percorre il ramo  dell'else

 vengono stampati entrambi

_____________________________________________________

                Esito test :                  

 

                        

Risposte esatte su domande affrontate

_____________________________________________________

return to lesson 8

_____________________________________________________