• 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 (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 2 (3 punti)

Cosa stampa la seguente funzione ricorsiva se chiamata con argomento

n = 3

?

void f (int n) {

printf ("%d ", n);

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

printf ("%d ", n);

return;

}

____________________________

Esercizio 3 (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)

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;

}

(2)

Esercizio 4 (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 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;

}

int confronta_vettori

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

int i;

for (_______________________) {

if (_____________________) return 0;

}

return 1;

}

Esercizio 5 (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 6 (2 punti)

Cosa stampa il seguente frammento di programma?

int y = 15 / 2;

double z = 15 /2;

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

______________________________

Esercizio 7 (3 punti)

Cosa stampa il seguente programma?

int g (int *q, int z) {

z += ++(*q);

return z;

}

int main() {

int a = 9, b;

b = g (&a, a);

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

return EXIT_SUCCESS;

}

____________________________

Esercizio 8 (2 punti)

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

7 ____________________

double v[4]; ____________________

char ch; ____________________

"vacanza" ____________________

Esercizio 9 (2 punti)

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

[ ] char ch = 'h';

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

[ ] char ch = 'h';

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

[ ] char ch = 'H';

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

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

printf ("%d", ch);

[ ] char ch = 'H';

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

Riferimenti

Documenti correlati

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

Tale struttura contiene il numero di sale effettivamente presenti e, per ciascuna sala, il numero di posti, il titolo del film (massimo 40 caratteri) e la sequenza di orari (ore

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

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