Verifica: nozioni minime sul linguaggio C 2

tempo a disposizione: 2 340 s punteggio massimo: 10
quantità di domande: 39 punti di penalità per ogni secondo di ritardo: 0,004 27
tempo massimo per completare l'invio della stampa del risultato: 20 s
data:
cognome e nome:
classe e sezione (corso):

Per lo svolgimento della verifica può essere usata una calcolatrice comune; inoltre possono essere usati fogli di brutta copia, per annotare i calcoli intermedi.

Quando viene richiesto di indicare valori numerici, non si deve specificare la base.

1) [-0.72..0.24] Si indichino quali sono le righe errate, dal punto di vista sintattico, contenute nell'estratto di codice seguente. Se un errore riguarda un'istruzione suddivisa su più righe, si indichi solo la prima di queste righe.

      1     /* bla bla bla bla bla bla bla bla */
      2 
      3 bla bla bla //
      4 /* bla bla bla bla bla // bla bla */
      5 
      6     /* bla bla bla bla bla // bla bla */ bla bla bla */
      7     // bla bla bla bla bla bla bla bla
      8 
      9 // bla bla bla bla bla /* bla bla //
     10 bla bla bla */
     11 
     12     // bla bla bla bla bla // bla bla // bla bla bla

2) [-0.96..0.24] Si indichino quali sono le righe errate, dal punto di vista sintattico, contenute nell'estratto di codice seguente. Se un errore riguarda un'istruzione suddivisa su più righe, si indichi solo la prima di queste righe.

      1     a = 123 + b:
      2     c = d * 34;
      3     d = e * 4 +
      4     f
      5     ;
      6     ;
      7     { a = 123 + b; }
      8     { c = d * 34
      9       d = e * 4 +
     10       f; }

3) [-0.36..0.24] Segue un elenco di nomi di variabili o di funzioni (non ha importanza distinguere). Si indichino quali sono i nomi che non possono essere usati.

  1. uno

  2. uno!due!tre

  3. uno_due_tre

  4. uno:due:tre

  5. uno2tre

4) [-0.25..+0.25] Cosa fanno le istruzioni seguenti?

printf ("Ciao\n");
printf ("mondo!");
  1. Visualizzano la scritta «Ciao mondo!» senza interruzioni di riga.
  2. Visualizzano la scritta «Ciao mondo!» riportando, alla fine, il cursore all'inizio della riga successiva.
  3. Visualizzano la scritta «Ciaomondo!» senza interruzioni di riga.
  4. Visualizzano la scritta «Ciaomondo!» riportando, alla fine, il cursore all'inizio della riga successiva.
  5. Visualizzano la scritta «Ciao», «mondo!», in due righe separate.

5) [-0.25..+0.25] A cosa serve la sequenza \n che appare nell'esempio seguente?

printf ("bla bla bla bla\n");
  1. A mandare a capo il testo in quel punto.
  2. A introdurre una tabulazione orizzontale.
  3. A impedire che in quel punto il testo sia lasciato andare a capo.

6) [-0.24..0.24] Si indichino quali sono le righe errate, contenute nell'estratto di codice seguente.

      1     printf ("Prezzo: %d, sconto 5%%.", 1000);
      2     printf ("Prezzo: %d, sconto %d%%", 1000, 5);
      3     printf ("Prezzo: %d, sconto 5%%\n.", 1000, 5);
      4     printf ("Prezzo: %d, sconto %d%%.\n", 1000, 5, 11);

7) [-0.25..+0.25] Cosa rappresenta una variabile scalare di tipo signed short?

  1. Un carattere, per cui non conta sapere se il segno viene considerato o meno.
  2. Un carattere con segno.
  3. Un carattere senza segno.
  4. Un intero più breve di int, con segno.
  5. Un intero più breve di int, senza segno.
  6. Un intero normale con segno.
  7. Un intero normale senza segno.
  8. Un intero più ampio di int, con segno.
  9. Un intero più ampio di int, senza segno.
  10. Un numero in virgola mobile a precisione singola.
  11. Un numero in virgola mobile a precisione doppia.

8) [-0.25..+0.25] Come si definisce una variabile scalare di tipo intero normale con segno?

  1. unsigned
  2. short
  3. long
  4. signed long
  5. unsigned long
  6. long long
  7. signed long long
  8. unsigned long long
  9. char
  10. signed char
  11. unsigned char
  12. short int
  13. signed short int
  14. unsigned short int
  15. int
  16. signed int
  17. unsigned int
  18. long int
  19. signed long int
  20. unsigned long int
  21. long long int
  22. signed long long int
  23. unsigned long long int
  24. float
  25. double
  26. long double

9) [0..0.25] Si scriva la sequenza corretta, in ordine di rango crescente, dei tipi indicati. Vanno inserite esattamente quattro cifre numeriche, senza spazi e senza altri caratteri.

  1. long

  2. short

  3. char

  4. int

10) [-0.25..+0.25] Dovendo rappresentare valori da -19910 a +19910, è possibile usare una variabile scalare di tipo signed char a 8 bit?

  1. Sì.
  2. No.
  3. Non so rispondere.

11) [-0.25..+0.25] Dovendo rappresentare valori da -9999910 a +9999910, è possibile usare una variabile scalare di tipo signed int a 32 bit?

  1. Sì.
  2. No.
  3. Non so rispondere.

12) [-0.25..+0.25] Dovendo rappresentare valori da -9999910 a +9999910, è possibile usare una variabile scalare di tipo double a 32 bit?

  1. Sì.
  2. No.
  3. Non so rispondere.

13) [-0.25..+0.25] Indicare il tipo corrispondente alla costante 123U.

  1. unsigned
  2. short
  3. long
  4. signed long
  5. unsigned long
  6. long long
  7. signed long long
  8. unsigned long long
  9. char
  10. signed char
  11. unsigned char
  12. short int
  13. signed short int
  14. unsigned short int
  15. int
  16. signed int
  17. unsigned int
  18. long int
  19. signed long int
  20. unsigned long int
  21. long long int
  22. signed long long int
  23. unsigned long long int
  24. float
  25. double
  26. long double

14) [-0.25..+0.25] Indicare il tipo corrispondente alla costante 123.

  1. unsigned
  2. short
  3. long
  4. signed long
  5. unsigned long
  6. long long
  7. signed long long
  8. unsigned long long
  9. char
  10. signed char
  11. unsigned char
  12. short int
  13. signed short int
  14. unsigned short int
  15. int
  16. signed int
  17. unsigned int
  18. long int
  19. signed long int
  20. unsigned long int
  21. long long int
  22. signed long long int
  23. unsigned long long int
  24. float
  25. double
  26. long double

15) [0..0.25] Si scriva la costante che esprime il valore 123 di tipo unsigned long int. Non viene proposto alcun suggerimento.

16) [0..0.25] Seguendo il suggerimento, si scriva il valore in base dieci corrispondente alla costante 033.

17) [0..0.25] Seguendo il suggerimento, si scriva il valore in base dieci corrispondente alla costante 0x33.

18) [-0.25..+0.25] Cosa individua il tipo void?

  1. Una variabile qualunque.
  2. Una variabile composta da una quantità infinita di byte.
  3. Uno spazio in memoria di lunghezza nulla.
  4. Uno spazio in memoria di lunghezza infinita.
  5. Un array di lunghezza variabile.

19) [-0.25..+0.25] Supponendo di poter creare una variabile di tipo void, quale intervallo di valori le si potrebbe assegnare?

  1. Da zero a + infinito.
  2. Da - infinito a + infinito.
  3. Solo il valore zero.
  4. Nessun valore.

20) [-0.25..+0.25] Indicare il tipo del risultato che dovrebbe essere prodotto dall'espressione 123/45.

  1. unsigned
  2. short
  3. long
  4. signed long
  5. unsigned long
  6. long long
  7. signed long long
  8. unsigned long long
  9. char
  10. signed char
  11. unsigned char
  12. short int
  13. signed short int
  14. unsigned short int
  15. int
  16. signed int
  17. unsigned int
  18. long int
  19. signed long int
  20. unsigned long int
  21. long long int
  22. signed long long int
  23. unsigned long long int
  24. float
  25. double
  26. long double

21) [-0.25..+0.25] Indicare il tipo del risultato prodotto dall'espressione a = 123/45, sapendo che la variabile a è di tipo float.

  1. unsigned
  2. short
  3. long
  4. signed long
  5. unsigned long
  6. long long
  7. signed long long
  8. unsigned long long
  9. char
  10. signed char
  11. unsigned char
  12. short int
  13. signed short int
  14. unsigned short int
  15. int
  16. signed int
  17. unsigned int
  18. long int
  19. signed long int
  20. unsigned long int
  21. long long int
  22. signed long long int
  23. unsigned long long int
  24. float
  25. double
  26. long double

22) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile b. Si indichi il valore in base dieci.

int a = 4;
int b;
b = ++a;
b++;

 

23) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile b. Si indichi il valore in base dieci.

int a = 5;
int b = a / 2;
b = b + a;

 

24) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile c. Si indichi il valore in base dieci.

int a = 7;
unsigned char b = 4
int c = b < a;

 

25) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile c. Si indichi il valore in base dieci.

int a = 4;
unsigned char b = a++;
int c = ++b == a;

 

26) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile c. Si indichi il valore in base dieci.

int a = 4;
unsigned char b = (4 < 3);
int c = a && b;

 

27) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile c. Si indichi il valore in base dieci.

int a = 0;
unsigned char b = (4 > 3);
int c = a || b;

 

28) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile c, tenendo conto che lo scorrimento è di tipo aritmetico. Si indichi il valore in base dieci, specificando il segno.

int a = -5;
int c = a >> 1;

 

29) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile c. Si indichi il valore in base dieci.

int a = 5;
int b = 4;
int c = a | b;

 

30) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile c. Si indichi il valore in base dieci.

int a = 2;
int b = 4;
int c = a & b;

 

31) [-0.25..+0.25] Indicare il tipo del risultato prodotto dall'espressione ((double) a) / 3.

  1. unsigned
  2. short
  3. long
  4. signed long
  5. unsigned long
  6. long long
  7. signed long long
  8. unsigned long long
  9. char
  10. signed char
  11. unsigned char
  12. short int
  13. signed short int
  14. unsigned short int
  15. int
  16. signed int
  17. unsigned int
  18. long int
  19. signed long int
  20. unsigned long int
  21. long long int
  22. signed long long int
  23. unsigned long long int
  24. float
  25. double
  26. long double

32) [0..0.25] Osservando la porzione di codice indicata, si scriva il valore contenuto nella variabile c. Si indichi il valore in base dieci.

int a = 20;
int b = 5;
int c = (a *= 2, b += 10, c = a + b);

 

33) [-0.25..+0.25] Osservando il programma indicato, cosa viene visualizzato?

      1 #include <stdio.h>
      2 int main (void)
      3 {
      4     int x = 5;
      5     if (x % 2)
      6       {
      7         printf ("Sono felice :-)\n");
      8       }
      9     else
     10       {
     11         printf ("Sono triste :-(\n");
     12       }
     13     getchar ();
     14     return 0;
     15 }
  1. Sono felice :-)
  2. Sono triste :-(
  3. Non so rispondere

34) [-0.25..+0.25] Osservando il programma indicato, cosa viene visualizzato?

      1 #include <stdio.h>
      2 int main (void)
      3 {
      4     int w = 4;
      5     switch (++w)
      6       {
      7         case 0: printf ("domenica\n"); break;
      8         case 1: printf ("lunedì\n"); break;
      9         case 2: printf ("martedì\n"); break;
     10         case 3: printf ("mercoledì\n"); break;
     11         case 4: printf ("giovedì\n"); break;
     12         case 5: printf ("venerdì\n"); break;
     13         case 6: printf ("sabato\n"); break;
     14         case 7: printf ("domenica\n"); break;
     15       }
     16     getchar ();
     17     return 0;
     18 }
  1. domenica
  2. lunedì
  3. martedì
  4. mercoledì
  5. giovedì
  6. venerdì
  7. sabato
  8. Non so rispondere

35) [0..0.25] Osservando il programma indicato, cosa contiene la variabile k alla fine del ciclo?

      1 #include <stdio.h>
      2 int main (void)
      3 {
      4     int j = 0;
      5     int k = 7;
      6     while (j < 7)
      7       {
      8         j++;
      9         k++;
     10       }
     11     printf ("La variabile k contiene %d\n", k);
     12     getchar ();
     13     return 0;
     14 }

 

36) [0..0.25] Osservando il programma indicato, cosa contiene la variabile k alla fine del ciclo?

      1 #include <stdio.h>
      2 int main (void)
      3 {
      4     int j;
      5     int k = 7;
      6     for (j = 0; j <= 7; j++)
      7       {
      8         k++;
      9       }
     10     printf ("La variabile k contiene %d\n", k);
     11     getchar ();
     12     return 0;
     13 }

 

37) [-0.25..+0.25] Selezionare il prototipo della funzione mia() che restituisce un intero normale con segno e richiede due parametri: il primo di tipo intero senza segno e il secondo di tipo a virgola mobile normale.

  1. int mia (unsigned char x, float y);
  2. signed int mia (unsigned int z, double a);
  3. unsigned int mia (char b, double c);
  4. float mia (double d, double e);
  5. double mia (char f, unsigned int g);

38) [-2.25..0.25] Si indichino quali sono le righe errate, contenute nell'estratto di codice seguente. Se un errore riguarda un'istruzione suddivisa su più righe, si indichi solo la prima di queste righe.

      1 unsigned int
      2 fattoriale (unsigned int x) {
      3     unsigned int f = x;
      4     unsigned int i;
      5     for (i = (x - 1); i > 0; i--; f++) 
      6       {
      7         f = f * i;
      8       }
      9     return i;
     10 }

39) [-0.25..+0.25] Osservando l'estratto di codice successivo, si vuole sapere se il prototipo e la descrizione della funzione sono compatibili.

      1 unsigned int mia_funzione (signed int uno, float due,
      2                            char tre);
      3 
      4 unsigned int
      5 mia_funzione (unsigned int uno, float due, char tre)
      6 {
      7     unsigned int i;
      8     ...omissis...
      9     return i;
     10 }
  1. Sì, prototipo e funzione sono compatibili.
  2. No, prototipo e funzione non sono compatibili.
  3. Non so rispondere.

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net