Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ritirato
5. Tutte le sanzioni disciplinari sono registrate nella carriera scolastica dello studente e vengono trascritte nei fogli di congedo.
1
Esercizi
(leggere attentamente il testo prima di scrivere la risposta...
e rileggere la risposta prima di consegnare il compito!)
Usare lo spazio sotto ogni esercizio per rispondere agli esercizi. Svolgere gli esercizi
giustificando ogni risposta. Alle risposte corrette ma non giustificate sara assegnato un
punteggio di poco superiore allo zero.
Risposta
2
Esercizio 2 Cosa viene stampato dal seguente programma?
#include <stdio.h>
struct point{
int x;
int y;
};
int main(void) {
struct point p = {2,3};
f(p);
printf ("x = %d y = %d\n", p.x, p.y);
return 0;
}
Risposta
3
Esercizio 3 Scrivere una funzione void get_shortest_word(char *str, char *shortest)
che assegna alla stringa shorest la piu corta parola contenuta nella frase conservata in
stringa str. Ad esempio, se str contiene la frase Questo non puoi sbagliarlo, in
shortest verrebbe conservata la parola non. A parita di lunghezza minima, shortest
conserva una parola di lunghezza minima.
Risposta
4
Esercizio 4 Scrivere cosa fa la seguente funzione f (spiegando il significato del valore intero
restituito dalla funzione). Scrivere cosa viene stampato dal main.
Inoltre riscrivere la funzione f usando laritmetica dei puntatori invece dellindicizzazione
dellarray (eliminare le variabili i, j, z e tutti gli usi delloperatore [ ]). Quindi la variabile z
che viene restituita, non puo essere dichiarata come variabile intera.
#include <stdio.h>
int z = 0;
int i = 0, j = 0;
while (s[i++] == t[j++])
i f (s[i] && t[j]) ;
e l s e break;
i--; j--;
while (s[i++] != t[j++]) {
z++;
i f (s[i] && t[j]) ;
e l s e break; }
return z;
}
int main(void) {
char a[]="12345";
char b[]="12345";
char c[]="012365";
char d[]="17849";
char e[]="4";
Risposta
5
Risposta
6
Esercizio 5 Descrivere cosa fa la seguente funzione. Inoltre, scrivere cosa restituisce se
chiamata come f(A,7), dove A[]={10,2,3,4,1,3,10}. Infine, indicare come chiamare
la funzione f in modo che f venga eseguita tra gli elementi 3, 4, 1, 3.
1
2 int *f(int a[], int n) {
3 int i, *ptr;
4
5 ptr = &a[0];
6 f o r (i = 1; i < n; i++)
7 i f (a[i] > *ptr)
8 ptr = &a[i];
9
10 return ptr;
11 }
Risposta
7
Esercizio 6 Spiegare cosa fa il seguente programma. Indicare cosa viene stampato se, dopo
la compilazione, vengono eseguiti i seguenti comandi:
./a.out estate esami
./a.out ombrello ombrellone
./a.out ancora programmi
./a.out maremoto mare
#include <stdio.h>
int main(int argc, char *argv[]) {
i f (argc != 3) {
printf("Errore\n");
return 0;
}
int i = 0;
while (argv[1][i] == argv[2][i]){
i++;
i f (argv[1][i] == \0){
printf("%d\n", i);
return 0;
}
i f (argv[2][i] == \0){
printf("%d\n", -i);
return 0;
}
}
printf("0\n");
return 0;
}
Risposta
8
Esercizio 7 Mostrando tutti i passaggi, indicare il valore di
~(~ 0 << 4) & (~0 << 1).
Risposta
9
Esercizio 8 Indicare un opportuno valore per la malloc in riga 8. Sapreste indicare cosa
fa la funzione f e cosa viene stampato se viene eseguito il main seguente?
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int *f(int *array, int n)
5 {
6 int *new;
7 int i;
8 new = malloc(...);
9 i f (!new)
10 fprintf(stderr, "mi dispiace\n");
11 else
12 f o r (i=0; i<n; i++) {
13 new[i]=array[i] * 2;
14 new[n+i]=array[i] * 3;
15 }
16 return new;
17 }
18
19 int main(void) {
20 int array1[] = {1,2,3,4,5,6,7,8,9,0};
21 int *array2 = f(array1, 10);
22 int i = 0;
23 f o r (; i<20; i++)
24 printf("%d ", array2[i]);
25 printf("\n");
26 return 0;
27 }
10
BRUTTA COPIA
11
BRUTTA COPIA
12
BRUTTA COPIA
13