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); }
scanf("%d",&r); cont = r * cont; somma = 1; if( cont < r){ somma = somma + cont ; cont = cont++;} printf("\n%d",somma); }
scanf("%d",&r); cont = r * cont; somma = 1; if( cont <= r){ somma = somma + cont ; cont = cont++;} printf("\n%d",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); }
main () { int cont, sommad;
for (cont=1; cont<=100; cont++) {if ((cont%2)!=0) sommad=sommad+cont; printf("\n%d",sommad); }}
main () { int cont, sommad=0;
for (cont=0; 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?
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
_____________________________________________________
return to lesson 8