c)
Rappresentazione in complemento alla base b
d)
Rappresentazione in modulo di un un intero in base b
6) Cosa fa la funzione DO definita nel programma seguente:
#include<stdio.h>
#define TRUE 1
#define FALSE 0
typedef int booleano;
typedef int TipoElementoMatrice;
typedef TipoElementoMatrice TipoMatrice[4][4];
TipoMatrice matrice;
booleano DO(TipoMatrice matrice);
int main(void)
{
/*...*/
return 0;
}
booleano DO(TipoMatrice matrice)
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i!=j&&matrice[i][j]!=0)
return FALSE;
}
}
return TRUE;
}
7) Quale problema risolve il seguente algoritmo , se r e' un numero intero
maggiore di 1 ?
1) leggi r; 2)
cont <--- 1; 3) cont = r * cont; 4) somma= 1;
5) se (cont <= r)
{ somma <--- somma
+ cont; cont <--- cont * 2; }
6) stampa somma;
a)
Stampa della somma di tutti i numeri da 1 fino ad r+1
b)
Stampa del valore r+1
c)
Stampa, del valore 2r + 1
d)
Stampa, del valore 2r
8) Quale/i fra le opzioni sono corrette nel linguaggio C, avendo la
seguente dichiarazione di struttura ( selezionare
tutte le opzioni di interesse ):
struct ind {
char nome[30]; char indir[40]; char citta[20];} ind_info;
struct ind{char nome[30]; char indir[40]; char citta[20];}indirizzario;
struct ind *pun;
printf("%s\n",pun->nome);
ind_info.indir[29]='c';
9)
Avendo le seguenti:
# define
MAX_NODI 100;
typedef
enum {TRUE=1,FALSE=0}Booleano;
typedef
int Tipo_atomi;
struct
Struct_albero_bin{
Tipo_atomi
info ;
Booleano esiste;
};
typedef struct Struct_albero_bin
Tipo_nodo_albero;
typedef Tipo_nodo_albero
Tipo_albero_bin[MAX_NODI];
Avendo la seguente
funzione:
void analizza(Tipo_atomi
info){printf("%d", info);}
scrivete una funzione
ricorsiva in C, che esegue la visita in preordine dell'albero binario su rappresentato
; la funzione in questione riceve come parametri albero
di tipo
Tipo_albero_bin,
in cui sono memorizzati i valori dei nodi e l'intero indice ,
che rappresenta la posizione dentro l'array albero
in cui e' memorizzata la radice dell'albero, se
esso non e' vuoto.
10) La seguente funzione C
:
long int F (int k){if(k==0) return 1; else return
k*F(k-1); } cosa utilizza e per calcolare che cosa ?
a)
usa la ricorsione per calcolare la somma dei numeri interi da 1 fino a
k.
b)
usa la ricerca binaria e calcola la somma dei numeri interi da 1 fino a
k.
c)
usa la ricorsione per calcolare il fattoriale di k.
d)
usa la ricorsione per calcolare il fattoriale di k, ma la funzione e'
non corretta.
11) Avendo la
seguente definizione
struct
nodo{int info; struct nodo *prox;}; cosa fa questa funzione:
void
func(struct nodo *alb){while (alb!=NULL) printf("%d--->",alb->info);
alb=alb->prox;} printf("NULL\n");}
a)
Stampa l'albero binario partendo dall'elemento puntato dal puntatore alb
ricevuto come parametro . .
b) Stampa la lista partendo dall'elemento puntato dal puntatore alb ricevuto come parametro. .
c)
Stamperebbe la lista partendo dall'elemento puntato dal puntatore alb ricevuto come parametro se la condizione nel ciclo while fosse (prox!=NULL).
d)
Stampa gli interi del campo info dell'albero binario il cui puntatore alla
radice e' alb.
12) Eseguite
ognuna delle seguenti attivita':
a)
Scrivete l'intestazione di una funzione chiamata scambia che
riceva come parametri due puntatori ai numeri in virgola mobile n ed m e
che non restituisca alcun valore.
b)
Scrivete il prototipo per la funzione della parte a)
c)
Scrivete l' intestazione di una funzione chiamata evaluate che
ricevendo un
intero n ed un puntatore alla funzione poly (funzione
intera con un argomento intero) ,
restituisca un intero ottenuto calcolando la funzione poly
su n.
d)
Scrivete il prototipo per la funzione della parte c)
13)
Avendo la seguente definizione:
struct
tab1
{ char nome[38];
char codice[5];
char telefon[20];
char fax[20];
char cap[6];
char citta[20];
char indiriz[45];
char note[51];
} CL1[100];
cosa rappresenta tale
dichiarazione, se e' corretta ?
14) Tenendo in considerazione la domanda 13) il seguente codice: int t=3; for(t=0;t<=99;t++)
strcpy(CL1[t].nome,"nessuno"); cosa
fa ?
15) Determinate quali fra le seguenti affermazioni sono vere e quali sono false: (facoltativamente
potete scrivere la motivazione della risposta)
a)
Se il puntatore di posizione di un file sequenziale fa riferimento ad un byte diverso dall'inizio di un file, quest'ultimo dovra' essere chiuso e riaperto
per leggere nuovamente da quel punto (inizio file).
scelga
VERO
FALSO
motivazione
:
b)
La
funzione fseek, puo' ricercare solo dall'inizio di un file.
scelga
VERO
FALSO
motivazione
:
c)
La funzione fprintf, puo'
scrivere sullo standard di output.
scelga
VERO
FALSO
motivazione
:
d)
Per trovare un certo
record in un file ad accesso casuale, non e' necessario scorrere tutti gli
altri record.
scelga
VERO
FALSO
motivazione
:
e)
I record dei file ad
accesso casuale non hanno una lunghezza uniforme.
scelga
VERO
FALSO
motivazione
:
16)
Nel programma seguente
cosa fa la funzione nome_funz?
#include<stdio.h>
#include<stdlib.h>
struct tab1
{ char carattere;
struct tab1 *next;} info;
int main()
{
void nome_funz(char *);
char car;
char stringa[35];
printf("\ninserite una stringa\n");
gets(stringa);
nome_funz(stringa);
scanf("\n%c",&car);
return(0);
}
void nome_funz( char *strin )
{struct tab1 *iniz;
char car;
if(*strin!=NULL)
{
iniz=malloc(sizeof(struct tab1));
iniz->carattere=*strin;
iniz=iniz->next;
nome_funz(strin+1);
}
iniz=NULL;
}
a) costruisce
ricorsivamente una pila, aggiungendo ogni nuovo carattere di strin all'inizio
b)
cancella l'ultimo carattere di strin in una lista semplice
c) costruisce ricorsivamente una lista doppia, aggiungendovi ogni nuovo
carattere di strin alla fine
d) costruisce ricorsivamente una lista semplice, i cui nodi contengono
i caratteri di strin
17)
Avendo la definizione
struct
tab1
{ char nome1[38];
char codice[5];
char telefon[20];
char fax[20];
char cap[6];
char citta[20];
char indiriz[45];
char note[51];
struct
tab1 *next;
struct
tab1 *precedente;
} lista_doppia;
E'
possibile creare una lista doppia ordinata?
scelga
NO
SI
SI CON ALCUNE MODIFICHE
18) Come e' definito un albero
binario di ricerca ?
19) Avendo
definito, una struct albero, con il seguente prototipo di
funzione:
struct
albero *fun_alb( struct albero *radice, struct albero *r, char info); e'
possibile costruire un albero binario di ricerca usando la funzione fun_alb ?
a) Si ma fun_alb deve restituire un void
b)
No
c) Si
d)
Si ma non ordinato
20)
Nella macchina virtuale del C nel modello a tempo di esecuzione, abbiamo le
seguenti aree di memoria
a)
area del codice
b)
area dati globali
c)
area heap
d)
area stack
elencate
quali
sono le funzioni che svolgono queste aree di memoria?
21)
Un array monodimensionale di nome vector, di 10 caratteri, come si puo' dichiarare nel linguaggio C?
22)
la seguente dichiarazione typedef int k[8] tipoa; cosa rappresenta?
23)
(11000.1011) 2
corrisponde a in base 10.
24)
C2A4 esadecimale corrisponde a
in base 8.
25)
Supponete di dover utilizzare una lista doppia in un programma C, definite la
lista mediante strutture e puntatori.
26)
Perche' nel passaggio di un array ad una funzione, quest'ultimo viene sempre
passato per indirizzo nel linguaggio C?
27)
E' lecita la seguente definizione di struttura: struct{int giorno; int mese;
int anno;}data;
NO non ci vuole il punto e virgola
alla fine di data
SI
NO, manca il nome della struttura
SI, poiche' tutti i membri sono dello stesso
tipo
28)
Cosa fa la funzione malloc, il cui prototipo e':
void
*malloc(size_t dim);
29)
Il numero di nodi di un albero binario completo, avente profondita' h e' pari a :
supponendo, che la radice abbia profondita' zero.
30)
Nella funzione selection-sort, per ordinare 10 elementi di tipo carattere
contenuti in un array, quanti scambi sono necessari nel caso peggiore
(tutti gli elementi sono fuori posto)
a)
50
b) 51
c) 43
d) 45
Controlli la correttezza dei dati ed
invii il modulo
N.B. Il modulo va inviato una sola volta