Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Risposta: 20
6. Quale output produce il seguente codice?
#include <iostream>
using namespace std;
void copy(int a, int b, int c )
{ a *=2;
b *=2;
c *=2;
}
int main(){
int x=1, y=3, z=7;
copy(x,y,z);
cout <<x<<” ”<<y<<” ”<<z;
return 0;
}
2 6 14
359
237
137
7. Il passaggio di array in ingresso a funzione con la seguente sintassi: int f(int a[])
comporta la copia degli elementi dell’array
permette la modifica degli elementi dell’array all’interno della funzione
equivale al passaggio per riferimento
8. Selezionare le affermazioni vere. Scegli una o più alternative:
una variabile puntatore non ha indirizzo
una variabile puntatore non può essere modificata
una variabile puntatore é una variabile che contiene un indirizzo
9. Selezionare le affermazioni vere. Scegli una o più alternative:
Una allocazione multipla puó risultare in un segmentation fault
Una deallocazione multipla puó risultare in un memory leak
Una mancata deallocazione puó risultare in un memory leak
Una mancata allocazione puó risultare in un segmentation fault
10. Dopo l’esecuzione del seguente codice:
struct vector{
int data[3];
};
void increase(vector &v){
v[2]++;
}
vector x = { { 5, 6, 7 } };
increase(x);
Quale sará il valore degli elementi di x.data? Scegli un'alternativa:
5, 6, 7
5, 7, 7
genera errore di compilazione
5, 6, 8
genera un comportamento non prevedibile
11. Scegli una o più alternative:
00001001 + 00001001 = 00001110
01100100 + 10001001 = 11001101
00000101 + 00101010 = 00101111
00000101 + 00001001 = 00001110
12. Selezionare le affermazioni vere sui registri. Scegli una o più alternative:
Sono porte logiche combinatorie
Sono porte logiche sequenziali
Possono ricordare un valore oppure eseguire delle operazioni logiche
Il bit di load serve per forzare l’uscita al valore 1
13. Quali dei seguenti frammenti di codice compila correttamente? Scegli una o più alternative:
a.
const int y=6;
int z=4;
int z+y;
b.
const int y=6;
int z=4;
y=z;
c.
const int y=6;
int z=4+y;
int y=z+y;
d.
const int y=6;
int z=4;
y=y+z;
e.
const int y=6;
int z=4+y;
const int w=y+2;
f.
const int y=6;
int z=4+y;
int w=z+y;
14. Qual é il modo corretto di eseguire una porzione di CODICE solo se A é minore e uguale di B?
Scegli un'alternativa:
if( A <<= B ){ ...CODICE... }
if( A <B ){ ...CODICE... }
if( A <= C ){ ...CODICE... }
if( B >= A ){ ...CODICE... }
15. Quale output produce il seguente codice?
#include <iostream>
using namespace std;
void copy(int &a, int &b, int &c )
{ a *=2;
b *=2;
c *=2;
}
int main(){
int x=1, y=3, z=7;
copy(x,y,z);
cout <<x<<” ”<<y<<” ”<<z;
return 0;
}
Scegli un'alternativa:
359
2 6 14
137
237
16. Dato il seguente codice, quali saranno i valori degli elementi di a dopo l’esecuzione?
int a[5] = {1, 2, 3, 4};
Scegli un'alternativa:
a = {1, 2, 3, 4, 5}
a = {1, 2, 3, 4, 0}
a = {1, 2, 3, 4}
Errore di compilazione
Non é possibile prevederlo
17. Come si legge l’indirizzo di una variabile puntatore int *f; Scegli un'alternativa:
**f;
*f;
&f;
18. Per definire un array di k elementi interi, dove k ha un valore che non é noto al momento della
compilazione, quali tra queste sintassi sono corrette?
Scegli una o più alternative:
int a[k];
int *a[k];
int &a[k];
int *a = new int[k];
int &a = new int[k];
int a = new int[k];
19. Dopo l’esecuzione del seguente codice:
struct vector{
int data[3];
};
void increase(const vector &v){
v.data[2]++;
}
vector x = { { 5, 6, 7 } };
increase(x);
Quale sará il valore degli elementi di x.data? Scegli un'alternativa:
5, 6, 7
genera errore di compilazione
genera un comportamento non prevedibile
5, 6, 8
5, 7, 7
20. Selezionare le affermazioni vere sulla porta AND:
a. 0 & 0 == 1
b. Può essere implementata usando solo porte NAND
c. Può essere rappresentata con il simbolo matematico della moltiplicazione
d. Restituisce vero solo se il primo ingresso è vero ed il secondo è falso
21. Selezionare le affermazioni vere sulla porta logica Inverter
a. è realizzabile con 2 transistor
b. Se il bit di ingresso ha valore a=1 allora il bit di uscita avrà valore a=0
c. Non ha alcuna utilità pratica
d. Se il bit di ingresso ha valore a=1 allora il bit di uscita avrà valore a=1
22. Selezionare le affermazioni vere sui registri
a. Il bit load serve per forzare l’uscita al valore 1
b. Sono porte logiche combinatorie
c. Sono porte logiche sequenziali
d. Possono ricordare un valore oppure eseguire delle operazioni logiche
23. Quali delle seguenti istruzioni genera errore?
a. int y, z;
y==3;
b. int y, z;
z \=y;
c. int y, z;
y=w*3;
d. int y, z;
y=3;
e. int y, z;
y/=3;
f. int y, z;
y-=z*3;
24. Dato il codice:
while( CONDIZIONE -A && CONDIZIONE -B)
{ …CODICE-A…..
}
Il CODICE-A è eseguito finchè sia CONDIZIONE-A sia CONDIZIONE-B sono vere
25. Quale output produce il seguente codice?
#include <iostream>
using namespace std;
void copy(int a, int b, int c)
{ a *=2;
b *=2;
c *=2;
}
int main(){
int x=1, y=3, z=7;
copy(x, y, z);
cout<<x<<” “<<y<<” “<<z;
returno 0;
} a. 359
b. 237
c. 137
d. 2 6 14
26. Per definire un array di 3 elementi con valori 10, 20 e 30, quali tra queste sintassi sono corrette?
a. int a[3] = {10, 20, 30};
b. int a[ ] = {10, 20, 30};
c. int a[4] = {10, 20, 30};
d. int a[3];
a[1] = 10;
a[2] = 20;
a[3] = 30;
e. int a[3];
a = {10, 20, 30};
f. int a[3];
a[0] = 10;
a[1] = 20;
a[2] = 30;
27. Come si legge l’indirizzo di una variabile puntatore int *f; ?
a. **f;
b. &f;
c. *f;
28. Dato il seguente codice:
int *a = new int[3];
delete a;
a. La deallocazione di memoria è effettuata correttamente
b. Si tratta di una allocazione di memoria dinamica
c. Si tratta di una deallocazione di memoria statica
29. Il passaggio per valore di una struct ad una funzione:
a. genera un comportamento non prevedibile
b. è in generale da preferirsi al passaggio per riferimento
c. genera errore di compilazione
d. è potenzialmente computazionalmente onerosa
e. comporta la copia di tutti i membri della struct
30. Selezionare le affermazioni vere sulla porta logica XOR
a. È una porta logica OR negata
b. Non può essere implementata usando solo porte NAND
c. 1 XOR 1 == 0
d. Restituisce falso solo se il primo ingresso è falso ed il secondo è falso
31. Dato il codice:
int a=2,b=2,d=3,e=10;
int c = b <= d ? e : a;
Qual è il valore di c dopo l’esecuzione?
10
32. Quali sono le parti obbligatorie nella dicihiarazione di una funzione?
a. nome della funzione, parametri
b. nome della funzione, parametri, valore di ritorno
c. valore di ritorno, nome della funzione
d. valore di ritorno, nome della funzione, parametri, istruzione return
33. Selezionare le affermazioni vere sul DFF
a. E’ una porta logica sequenziale
b. Restituisce vero se l’ingresso è vero
c. E’ una porta logica combinatoria
d. Il valore dell’ingresso del ciclo precedente è il valore dell’uscita del ciclo precedente
34. Quale output stampa questo frammento di codice?
int x=1, y=2;
cout<<x / y;
Risposta: 0
35. Se da riga di comando scrivo ./a.out, ipotizzando di recuperare i parametri dal main, quanto vale
argc?
a. 0
b. 1
c. 2
d. -1
36. Quale delle seguenti affermazioni è vera
a. solo le variabili non puntatore hanno indirizzo
b. ogni variabile ha un indirizzo
c. solo le variabili puntatore hanno indirizzo
37. Selezionare le affermazioni vere sulla porta logica FullAdder:
a. se i bit di ingresso hanno valori a=1, b=0, c=1 allora i bit di uscita avranno valore
sum=0, carry=1
b. calcola la somma dei due bit di ingresso
c. non è una porta logica combinatoria
d. se i bit di ingresso hanno valori a=1, b=1, c=1 allora i bit di uscits avranno valore
sum=1, carry=1
38. Selezionare le affermazioni vere sui registri multi-bit
a. Non sono delle porte logiche
b. Possono essere implementati usando dei registri ad 1 bit
c. Possono memorizzare un valore multi-bit ed eseguire delle operazioni logiche
d. Il bit di load è condiviso tra tutti i registri ad 1 bit
39. Dopo le sueguenti assegnazioni quanto valgono x e y?
int x=2;
int y=++x;
a. x=2 e y=3
b. x=3 e y=3
c. x=2 e y=2
d. errore di compilazione
40. Dato il seguente codice
struct data{
int giorno, mese, anno;
};
data x;
data *px = &x;
Selezionare i modi corretti per accedere al campo giorno della variabile x:
a. (*px).giorno
b. x.giorno
c. px.giorno
d. px - >giorno
e. x - >giorno
f. (*px) - > giorno
41. Dato il codice:
int r = 0;
for(int x = 0; x<10; x+=2){
r = x;
}
Selezionare l’affermazione vera:
a. r alla fine del ciclo vale 10
b. r alla fine del ciclo vale 8
c. non si ferma mai
Qual è l’output del codice:
void main()
{ p(f(2));
return=;
}
int f(int a)
{ int z=2;
return z*a/2/2;
}
void p(int b)
{ cout<<b;
} a. 4
b. 2
c. Nessun output
d. Errore di compilazione
42. Se da riga di comando scrivo: ./a.out -c “text.txt”, ipotizzando di recuperare i parametri del main
cosa contiene argv[2]?
a. il nome del nostro eseguibile
b. la stringa “-c”
c. nessuna di queste
d. niente
43. Data la seguente tabella di verità, selezionare la funzione logica corrispondente:
44. Selezionare le affermazioni vere, considerando la codifica complemento a 2.
Scegli una o più alternative:
Il numero binario 11110111 corrisponde al numero decimale -9
É la codifica meno usata perché ha una rappresentazione doppia dello zero
-X in complemento a 2 corrisponde a 2^{n} - X + 1 in codifica senza segno
Il numero binario 11110010 corrisponde al numero decimale -14
45. Selezionare le affermazioni vere sulla