Prof. G. Ascia Esempi di domande della prima prova in itinere Fondamenti di Informatica-Ingegneria Telematica 1 Prof. G. Ascia Dato il seguente frammento di codice: i=0; while (i>0 && i<10 ) { i = i+2; printf("%d ",i); } Cosa viene stampato sul video? [ ] Risposta 1 0 2 4 6 8 10 [ ] Risposta 2 0 2 4 6 8 [ ] Risposta 3 2 4 6 8 [ ] Risposta 4 Non viene stampato alcun numero Fondamenti di Informatica-Ingegneria Telematica 2 Prof. G. Ascia Dato il seguente frammento di codice: for (i=0; i>10; i++) printf("%d ", i); Cosa viene stampato sul video? [ ] Risposta 1 0 1 2 3 4 5 6 7 8 9 10 [ ] Risposta 2 non viene stampato alcun numero [ ] Risposta 3 11 12 13 14 15 16 ecc. ecc. [ ] Risposta 4 0 1 2 3 4 5 6 7 8 9 Fondamenti di Informatica-Ingegneria Telematica 3 Prof. G. Ascia Dato il seguente frammento di codice: i=0; j=0; while (i<5 && j<=7) { i++; j=j+2; } Quanto valgono i e j alla fine del ciclo? [ ] Risposta 1 i=5 j=8 [ ] Risposta 2 i=4 j=8 [ ] Risposta 3 i=5 j=7 [ ] Risposta 4 i=4 j=7 Fondamenti di Informatica-Ingegneria Telematica 4 Prof. G. Ascia Indicare la corretta sequenza di istruzioni che esprime la ricerca binaria in un vettore [ ] Risposta 1: trovato=0; inf=0; sup=N-1; med=(inf+sup)/2; while(inf<=sup && !trovato) { if(num==A[med]) trovato=1; else if (num<A[med]) sup=med-1; else inf=med+1; } [ ] Risposta 2: trovato=0; inf=0; sup=N-1; while(inf<=sup && !trovato) { med=(inf+sup)/2; if(num==A[med]) trovato=1; else if (num<A[med]) sup=med-1; else inf=med+1; } [ ] Risposta 3: trovato=0; inf=0; sup=N-1; med=(inf+sup)/2; while(inf<=sup && !trovato) { med=sup/2; if(num==A[med]) trovato=1; else if (num<A[med]) sup=med-1; else inf=med+1; } [ ] Risposta 4: trovato=1; inf=0; sup=N-1; med=(inf+sup)/2; while(inf<=sup && trovato==0) { med=(inf+sup)/2; if(num==A[med]) trovato=1; else if (num<A[med]) sup=med-1; inf=med+1; } Fondamenti di Informatica-Ingegneria Telematica 5 Prof. G. Ascia Quali delle seguenti sequenze di codice legge e stampa il massimo tra 2 numeri? [ ] Risposta 1 scanf(“%d”,&a); scanf(“%d”,&b); max = a; if (b > a) max = b; printf(“%d”,max); [ ] Risposta 2 scanf(“%d”,&a); scanf(“%d”,&b); max = b; if (b > a) max = a; printf(“%d”,max); [ ] Risposta 3 scanf(“%d”,a); scanf(“%d”,b); max = a; if (b > a) max = b; printf(“%d”,max); [ ] Risposta 4 scanf(“%d”,a); scanf(“%d”,b); if (b > a) max = b; else max=a; printf(“%d”,max); Fondamenti di Informatica-Ingegneria Telematica 6 Prof. G. Ascia Quali delle seguenti sequenze di codice legge e calcola la somma di 10 numeri ? [ ] Risposta 1: conta = 10; somma = 0; while (conta <10) { printf(“Inserisci un numero”); scanf(“%d”,&numero); somma = somma + numero; contatore = contatore + 1; } printf(“%d”,somma); [ ] Risposta 2: conta = 0; somma=0; while (conta <10) { printf(“Inserisci un numero”); scanf(“%d”,numero); somma = somma + 1; contatore = contatore +numero; } printf(“%d”,somma); [ ] Risposta 3: conta = 0; somma = 0; while (conta >0) { printf(“Inserisci un numero”); scanf(“%d”,&numero); somma = somma + numero; contatore = contatore - 1; } printf(“%d”,somma); [ ] Risposta 4: conta = 10; somma = 0; while (conta >0) { printf(“Inserisci un numero”); scanf(“%d”,&numero); somma = somma + numero; contatore = contatore - 1; } printf(“%d”,somma); Fondamenti di Informatica-Ingegneria Telematica 7 Prof. G. Ascia Indicare l'errore presente nel seguente codice che esprime il calcolo del massimo tra 20 numeri. conta = 1; scanf(“%d”,&a); while(conta<20) { printf(“Inserisci un numero”); scanf(“%d”,&a); conta=conta+1; if(a>max) max=a; } printf(“%d”,max); [ ] Risposta 1 L’incremento di conta va messo dopo il confronto if(a>max) [ ] Risposta 2 L’inizializzazione della variabile conta è sbagliata [ ] Risposta 3 Manca l’inizializzazione della variabile max [ ] Risposta 4 La printf va messa dentro il ciclo while Fondamenti di Informatica-Ingegneria Telematica 8 Prof. G. Ascia Indicare l'errore presente nel seguente codice che esprime la ricerca dell’indice dell’elemento minimo { for(ind=0;ind<10;ind++) scanf(“%d”,&A[ind]); imin=A[0]; for(i=10;i>0;i--) if(A[i]<A[imin]) imin=i; printf(“%d”,imin); } [ ] Risposta 1 La condizione i>0 del secondo ciclo for è errata [ ] Risposta 2 La condizione dell’istruzione if (A[i]<A[imin]) è errata [ ] Risposta 3 L’inizializzazione della variabile imin è errata [ ] Risposta 4 L’inizializzazione della variabile i è errata Fondamenti di Informatica-Ingegneria Telematica 9 Prof. G. Ascia Indicare quale tra le seguenti sequenze esprime la ricerca sequenziale del valore x in un vettore [ ] Risposta 1: scanf("%d",&x); trovato=0; ind=0; while(ind<n && !trovato) if (tab[ind]==x) trovato=1; else ind++; if(ind<n) printf("%d",ind); [ ] Risposta 2: scanf("%d",&x); trovato=0; while(ind<n && !trovato) if (tab[ind]!=x) ind++; if(ind<n) printf("%d",ind); [ ] Risposta 3: scanf("%d",&x); trovato=0; ind=0; while(tab[ind]!=x) ind++; if(ind<n) printf("%d",ind); [ ] Risposta 4: scanf("%d",&x); trovato=0; ind=n; while(ind<n && !trovato) if (tab[ind]==x) trovato=1; else ind--; if(ind<n) printf("%d",ind); Fondamenti di Informatica-Ingegneria Telematica 10 Prof. G. Ascia Quali delle sequenti sequenze di istruzioni calcola la somma dei primi 10 numeri positivi (1+2+3+...+10)? [ ] Risposta 1: somma=0; for (i=0;i<10;i++) somma=somma+i; [ ] Risposta 2: somma=0; for (i=0;i<10;i++) somma=i; [ ] Risposta 3: somma=0; for (i=1;i<11;i++) somma=i; [ ] Risposta 4: somma=0; for (i=10;i>0;i--) somma=somma+i; Fondamenti di Informatica-Ingegneria Telematica 11 Prof. G. Ascia Scrivere la sequenza C che, dati due vettori A e B di 20 numeri interi, calcoli il massimo per ogni coppia (A[i], B[i]) e ne visualizzi il valore se positivo. Scrivere la sequenza C che dati due vettori A e B di 10 numeri float, calcoli la media M[i] per ogni coppia (A[i], B[i]) e visualizzi il massimo tra gli M[i]. Scrivere la sequenza C che dato due vettori A e B di 10 numeri double, inverta l’elemento A[i] con B[i] se il loro prodotto e positivo. Scrivere la sequenza C che, dato un vettore di 20 elementi, visualizzi la media degli elementi di indice pari e la somma degli elementi di indice dispari. Fondamenti di Informatica-Ingegneria Telematica 12