Sei sulla pagina 1di 6

Corso di Fondamenti di Informatica

Ingegneria delle Comunicazioni – BCOR


Ingegneria Elettronica – BELR

Introduzione al C
Esercitazione 5

Claudio Ciccotelli
Esercizio 1
Scrivere una funzione is_fibonacci che preso in
ingresso un array di interi restituisca 1 se esso
rappresenta una porzione iniziale della successione di
Fibonacci, 0 altrimenti.
Una porzione iniziale della successione di Fibonacci è
una successione finita di numeri interi in cui i primi due
numeri sono 1 e 1, e ogni numero successivo è pari alla
somma dei due numeri precedenti.
Es.: 1, 1, 2, 3, 5, 8, 13, 21

Esercitazione 5 2014/2015 Pagina 2


Esercizio 2
Realizzare una propria versione della funzione

char *strchr(const char *s, int c);

La funzione deve restituire un puntatore alla prima


occorrenza del carattere c in s. Se c non è presente in s
la funzione deve restituire NULL.

(Non si possono usare le funzioni di string.h! )

Esercitazione 5 2014/2015 Pagina 3


Esercizio 3
Realizzare una propria versione della funzione

char *strcat(char *dest, const char *src);

La funzione deve concatenare la stringa src alla stringa


dest (la stringa risultante va scritta in dest). La
funzione restituisce un puntatore al primo carattere di
dest.

(Non si possono usare funzioni di string.h! )


Esercitazione 5 2014/2015 Pagina 4
Esercizio 4
/* 1*/ #include<stdio.h>
1. La riga 6 stampa 3
/* 2*/ void main() {
/* 3*/ int a = 5, b = 0, *c, **d; 2. La riga 9 stampa 4
/* 4*/ while (--a)
/* 5*/ if (a % 2 == 0) b++;
3. La riga 10 stampa
/* 6*/ printf("%d\n", b);
l'indirizzo di b
/* 7*/ c = &b; d = &c; 4. La riga 11 stampa
/* 8*/ **d = 4; l'indirizzo di b
/* 9*/ printf("%d\n", b);
/*10*/ printf("%p\n", c); 5. La riga 12 stampa
/*11*/ printf("%p\n", *d); l'indirizzo di b
/*12*/ printf("%d\n", **d);
/*13*/ if (a == 0 || ++b < 10)
6. La riga 14 stampa 5
/*14*/ printf("%d\n", b); 7. La riga 15 stampa 5
/*15*/ printf("%d\n", a);
/*16*/ }

Esercitazione 5 2014/2015 Pagina 5


Esercizio 5
/* 1*/ #include<stdio.h>
/* 2*/ #include<string.h> 1. sizeof(t) vale 4
/* 3*/ void main() {
/* 4*/ char s[30] = "ingegni";
2. La riga 7 stampa 0
/* 5*/ char t[60] = "alba"; 3. La riga 10 stampa "ingegni"
/* 6*/ int i, N = strlen(s);
/* 7*/ printf("%d\n", N > strlen(t)); 4. La riga 13 è equivalente a:
/* 8*/ for (i = 0; i < N/2; i++) *(s+6) = '\0'
/* 9*/ s[i] = s[(N-1) - i];
/*10*/ printf("%s\n", s); 5. La riga 16 stampa
/*11*/ char *e = t; "ingegnalba"
/*12*/ *(e++) = 'e';
6. La riga 18 stampa
/*13*/ s[6] = '\0';
"ingegnere"
/*14*/ strncpy(e, "ri", 2);
/*15*/ strcat(s, t); 7. La riga 19 stampa "ere"
/*16*/ printf("%s\n", s);
/*17*/ *(++e) = 'e'; *(e+1) = '\0';
/*18*/ printf("%s\n", s);
/*19*/ printf("%s\n", t);
/*20*/}
Esercitazione 5 2014/2015 Pagina 6