• Non ci sono risultati.

Matricola ____________________________ Nome ____________________________ Cognome ____________________________ Aula ____ Fila (dalla cattedra) ____ Posto (dalla porta) _____

N/A
N/A
Protected

Academic year: 2021

Condividi "Matricola ____________________________ Nome ____________________________ Cognome ____________________________ Aula ____ Fila (dalla cattedra) ____ Posto (dalla porta) _____"

Copied!
2
0
0

Testo completo

(1)

Università degli Studi di Udine

Corsi di laurea in Ing. Elettronica / Gestionale Fondamenti di programmazione / Inform. 1 22 novembre 2013 - Prova intermedia

Matricola ____________________________

Nome ____________________________

Cognome ____________________________

Aula ____ Fila (dalla cattedra) ____ Posto (dalla porta) _____

Esercizio 1 (2 punti)

Quale/i dei seguenti frammenti di codice stampa(no) il codice ASCII della lettera 'F' (maiuscola)?

[ ] char ch = 'F';

printf ("%d", ch – '0');

[ ] char ch = toupper ('f');

printf ("%d", ch);

[ ] char ch = 'f';

printf ("%d", ch + 'A' – 'a');

[ ] char ch = 'F';

printf ("%c", char (ch));

[ ] char ch = 'F';

printf ("%d", ch – '\0');

Esercizio 2 (3 punti)

Cosa stampa la seguente funzione ricorsiva se chiamata con argomento

n = 4

?

void f (int n) {

printf ("%d ", n);

if (n > 0) f (n-1);

printf ("%d ", n);

return;

}

____________________________

Esercizio 3 (4 punti)

La seguente funzione modifica una stringa compattando gli spazi tra le parole (se tra due parole ci sono due o più spazi, essi vengono ridotti a uno solo). Esempio:

"testo di prova" → "testo di prova"

La si completi.

void elimina_doppi_spazi (char t[]) {

int i, j = 0;

int trovato_spazio = 0;

for ( __________________________) {

if (t[i] == ' ') {

if (trovato_spazio == 0) {

_____________________

_____________________

j++;

} } else {

_____________________

_____________________

j++;

} }

t[j] = _________;

return;

}

Esercizio 4 (6 punti)

Si scriva la funzione

void somma_uno_bin (char nb[])

che incrementa di uno il numero binario rappresentato, con codici ASCII '0' e '1', dalla stringa passata come argomento. Il numero di bit rappresentati dalla stringa è fisso (l’eventuale riporto a sinistra della prima cifra va ignorato).

Esempi:

"11111111"

"00000000"

"00001"

"00010"

"1101011"

"1101100"

(svolgere sul retro del foglio) Esercizio 5 (3 punti)

La funzione

leggi_persona

legge da tastiera i dati di una persona nel formato deducibile dal seguente esempio:

Pier Paolo

Fante Della Polvere 1 7 2001

M

Quale o quali delle versioni della funzione è corretta?

(Indicarla/le con una croce nei riquadri a sinistra)

(2)

void leggi_persona

(char nome[], char cognome[],

int *p_g_nascita, int *p_m_nascita, int *p_a_nascita, char *p_sesso)

{

scanf ("%s %s", nome, cognome);

scanf ("%d %d %d %c",

p_g_nascita, p_m_nascita, p_a_nascita, p_sesso);

return;

}

{

gets (nome);

gets (cognome);

scanf ("%d %d %d",

&p_g_nascita, &p_m_nascita, &p_a_nascita);

while (getchar() != '\n');

scanf ("%c", &p_sesso);

return;

}

{

gets (nome);

gets (cognome);

scanf ("%d %d %d",

p_g_nascita, p_m_nascita, p_a_nascita);

while (getchar() != '\n');

*p_sesso = getchar();

return;

}

Esercizio 6 (2 punti)

Cosa stampa il seguente frammento di programma?

int y = 13 / 2;

double z = 13 /2;

printf ("%d %1.0lf\n", y, z);

__________________________

Esercizio 7 (5 punti)

La funzione

righe_uguali_in_matrice

restituisce 1 se la matrice passata come argomento contiene almeno due righe uguali e -1 altrimenti. La si completi.

int confronta_vettori

(int v1[], int v2[], int dim) {

int i;

for (_______________________) {

if (_____________________) return 0;

}

return 1;

}

int righe_uguali_in_matrice (int m[5][7]) {

int i, j;

/* per ogni riga della matrice */

for (_________________________) {

/* per ogni riga successiva a quella in esame */

for (____________________________)

/* se le due righe sono uguali */

if (confronta_vettori

(________________________))

return 1;

}

/* se nessuna riga era uguale a un'altra */

return -1;

}

Esercizio 8 (2 punti)

Prendendo come riferimento un elaboratore a 32 bit, scrivere le dimensioni in byte delle seguenti variabili e costanti:

double v[3]; ____________________

1 ____________________

char ch; ____________________

"ciao" ____________________

Esercizio 9 (3 punti)

Cosa stampa il seguente programma?

int g (int *q, int z) {

z += ++(*q);

return z;

}

int main() {

int a = 7, b;

b = g (&a, a);

printf ("%d %d\n", a, b);

return EXIT_SUCCESS;

}

__________________________________

Riferimenti

Documenti correlati

Per ciascun posto è rappresentato, per ciascuna delle proiezioni, l’informazione “libero”, “prenotato” o “venduto” mediante le lettere ‘L’, ‘P’ e ‘V’,

Il numero di bit rappresentati dalla stringa è fisso (l’eventuale riporto a sinistra della prima cifra va

La funzione righe_uguali_in_matrice restituisce 1 se la matrice passata come argomento contiene almeno due righe uguali e -1 altrimenti. La

Il numero di bit rappresentati dalla stringa è fisso (l’eventuale riporto a sinistra della prima cifra va

Ogni quadrato può essere rappresentato dalle coordinate della cella in alto a sinistra (la più vicina a quella con coordinate 0, 0) e dalla lunghezza del lato. La seguente

Ogni quadrato può essere rappresentato dalle coordinate della cella in alto a sinistra (la più vicina a quella con coordinate 0, 0) e dalla lunghezza del lato.. La seguente

Ogni quadrato può essere rappresentato dalle coordinate della cella in alto a sinistra (la più vicina a quella con coordinate 0, 0) e dalla lunghezza del lato. La seguente

Si scriva la funzione piano_liberabile che riceve in ingresso il vettore rappresentante il deposito e che restituisce l’indice del primo piano (partendo dal piano terra, di