Sunteți pe pagina 1din 11

Name: ________________________ Class: ___________________ Date: __________ ID: A

Subiecte tehnici de programare licenta matematica-informatica 4 ani

Multiple Choice
Identify the letter of the choice that best completes the statement or answers the question.

____ 1. Se consideră declaratiile:


var f:file of char;
c:char;
Ce contine fisierul f după executia secventei următoare:
rewrite(f);
for c: =’z’ downto ‘a’ do write(f,c);
a. zyxwvutsrqponmlkjihgfedcba;
b. za;
c. nimic
d. abcdefghijklmnopqrstuvwxyz.
____ 2. Functia de mai jos determină termenul Fibonacci de rang n. E corectă?
function fib(n:integer):integer;
begin
fib=fib(n-1)+fib(n-2)
end;
a. da, pentru că respectă formula de calcul a sirului lui Fibonacci;
b. nu, pentru ca se autoapelează la nesfârsit.
____ 3. Functia de mai jos implementează recursiv calculul sumei S(n)=1+2+...+n. E corectă?
int S(int n){
if(n<=0) return 0;
else return (S(n+1)-(n+1));
}
a. nu, pentru că, desi are conditie de iesire din autoapelare, nu se ajunge la ea;
b. da, pentru că respectă matematic relatia si are conditie de oprire din autoapelare.
____ 4. Dacă există declaratia
FILE f;
si se apelează functia fopen() astfel:
f=fopen(“fisier.txt”,”w”);
care afirmatie e adevărată?
a. fisierul fisier.txt a fost deschis pentru scriere; continutul său se păstrează;
b. fisierul fisier.txt a fost deschis pentru scriere, dar numai dacă exista pe disc;
c. fisierul fisier.txt a fost deschis pentru scriere/citire;
d. fisierul fisier.txt a fost deschis pentru scriere; dacă exista, continutul lui se pierde,
iar dacă nu exista, fisierul va fi creat în momentul executării instructiunii de mai
sus.

1
Name: ________________________ ID: A

____ 5. Se consideră problema căutării unui element într-un vector ordonat cu n elemente (căutare
binară). Care este complexitatea algoritmului (câti pasi se execută) în cazul cel mai defavorabil,
adică atunci când elementul nu este în vector?
a)
b)
c)

a. O(n), pentru că verificăm fiecare element;


b. O(1), căutarea efectuându-se in timp constant;
c. O ( log 2 n ) , la fiecare pas înjumătătindu-se intervalul de căutare.
____ 6. În fisierul numere.txt, aflat pe disc, sunt scrise, pe linie, numerele: 1 2 3 4 5 6
Ce se afisează în urma executiei programului următor:
#include<stdio.h>
#include<stdlib.h>

FILE f;
int n,i;

void main(){
f=fopen(”numere.txt”,”r”);
for(i=1;i<4;i++)
{fscanf(”%d”,&n);printf(”%d”,n);}
rewind(f);
for(i=1;i<4;i++)
{fscanf(”%d”,&n);printf(”%d”,n);}
FCLOSE f
}
a. 123456
b. 123
c. 123123
d. 123456123
____ 7. Streamurile standard (adică streamurile care sunt deschise automat când un program C îsi începe
executia) sunt:
a. stdin,stdout;
b. stdin,stdout,stderr;
c. nu există strem-uri standard.

2
Name: ________________________ ID: A

____ 8. Se consideră următorul arbore binar, reprezentat mai jos:

1 9

6 7 2 8

3 10 11 5
Este arborele binar complet?
a. da
b. nu
____ 9. Se consideră următorul arbore binar, reprezentat mai jos:

1 9

6 7 2 8

3 10 11 5
Care este înăltimea arborelui binar?
a. 1
b. 3
c. 4
d. 5
e. 11

3
Name: ________________________ ID: A

____ 10. Se consideră următorul arbore binar, reprezentat mai jos:

1 9

6 7 2 8

3 10 11 5
Este arborele binar strict?
a. da
b. nu
____ 11. Se consideră următorul arbore binar, reprezentat mai jos:

1 9

6 7 2 8

3 10 11 5
Parcurgerea in inordine este:
a. 4,1,9,6,7,2,8,3,10,11,5
b. 3,6,1,4,9,8,10,7,2,5,11
c. 3,6,10,1,7,4,11,2,5,9,8

4
Name: ________________________ ID: A

____ 12. Se consideră următorul arbore binar, reprezentat mai jos:

1 9

6 7 2 8

3 10 11 5
Parcurgerea in preordine este:
a. 4,1,9,6,7,2,8,3,10,11,5
b. 4,3,6,1,9,8,10,7,2,5,11
c. 4,1,6,3,10,7,9,2,11,5,8
____ 13. Se consideră următorul arbore binar, reprezentat mai jos:

1 9

6 7 2 8

3 10 11 5
Parcurgerea in postordine este:
a. 4,1,9,6,7,2,8,3,10,11,5
b. 3,10,6,7,1,11,5,2,8,9,4
c. 3,6,8,10,7,4,1,11,2,5,9
____ 14. Un arbore binar cu n vârfuri este plin. Precizati ce valoare poate avea n, dintre cele de mai jos:
a. 5
b. 7
c. 8
d. 9

5
Name: ________________________ ID: A

____ 15. Pentru implementarea unei stive, se folosesc functiile:


init(): initializarea stivei (vârful stivei devine -1)
empty(): returnează 1 daca stiva e goală si 0 în caz contrar
push(val): adauga item-ul val în stivă
pop(): returnează (stergându-l din stivă) elementul din vârful stivei
top(): returnează elementul din vârful stivei, fără a-l sterge însă
Ce apare la iesire, dacă asupra stivei se execută prelucrările de mai jos (presupunem ca functia
scrie afisează pe ecran parametrul ei, urmat de un spatiu):
init();
push(100);
push(54);
scrie(top());
pop();
scrie(top());
push(60);
push(630);
scrie(top());
pop();
scrie(top());
pop();
scrie(top());
a. 54 100 60 630 60
b. 54 100 630 60 100
c. 54 60 100 630 100
____ 16. Care este timpul în cazul cel mai defavorabil pentru algoritmul lui Kruskal, aplicat unui graf
complet cu n vârfuri?
a. O ( n )
2

b. O ( n log 2 n )
c. O ( n 2 log 2 n )
____ 17. Fie graful de mai jos:

3
2 1
1

4 3 3
1 2

5 4
3
Din câte muchii e format arborele partial de cost minim?
a. 3
b. 4
c. 5
d. 7

6
Name: ________________________ ID: A

____ 18. Fie graful de mai jos:

3
2 1
1

4 3 3
1 2

5 4
3
Precizati ordinea muchiilor care se adaugă pentru determinarea arborelui partial de cost minim,
folosind algoritmul lui Kruskal:
a. (2,3),(3,5),(3,4),(1,2),(1,4),(4,5),(2,5)
b. (2,3),(3,5),(3,4),(1,2)
c. (2,3),(3,5),(2,5),(3,4)
____ 19. Fie graful de mai jos:

3
2 1
1

4 3 3
1 2

5 4
3
Care este distanta minimă de la 1 la 5, conform algoritmului lui Dijkstra?
a. 3
b. 4
c. 5
d. 6

7
Name: ________________________ ID: A

____ 20. Se consideră arborele de căutare de mai jos:

12

5 18

2 9 15 19

17

Valoarea 13 va fi inserată în arbore:


a. ca fiu drept al lui 2
b. ca fiu drept al lui 9
c. ca fiu stâng al lui 15
d. ca fiu stâng al lui 19
e. ca fiu stâng al lui 17

8
Name: ________________________ ID: A

____ 21. Se consideră arborele de căutare de mai jos:

12

5 18

2 9 15 19

17

Dacă stergem rădăcina (12), ce nod va ajunge în locul ei ?


a. 5
b. 18
c. 9
d. 15
e. 17
____ 22. Metoda de sortare rapidă (Quicksort) găseste pivotul (printr-un algoritm de partitie) si se
autoapelează pentru cele două portiuni din vectorul initial. Algoritmul de partitie de mai jos e
corect? Presupunem că a este un tablou de întregi, i si j sunt indicele de start, respectiv de sfârsit
ale elementelor pe care le sortează. De asemenea, functia swap(x,y) interschimbă x si y. Functia
întoarce pozitia (finală) a lui a[i].

int partitie(a,i,j){int val,h,k;


val=a[i];
h=i;
for(k=i+1;i<=j;i++)
if(a[k]<=val){
h=h+1;
swap(a[h],a[k]);
}
swap(a[i],a[h]);
return h;
}
a. da
b. nu

9
Name: ________________________ ID: A

____ 23. Se consideră implementarea unei liste simplu înlăntuite sub forma:
typedef struct nod{
int info;
struct nod *adr;
}lista;

lista *c /*capul listei*/


,*p,*q;

Pentru inserarea unui elementului 3 în capul unei liste înlăntuite (dat de c), se fac următorii pasi:
a. p=(lista*)malloc(sizeof(lista)); p->info=3;p->adr=c;c=p;
b. p=(lista*)malloc(sizeof(lista)); p->info=3; c=p;p->adr=c;
____ 24. Se consideră implementarea unei liste simplu înlăntuite sub forma:
typedef struct nod{
int info;
struct nod *adr;
}lista;

lista *c /*capul listei*/


,*p,*q;

Dacă vrem să stergem capul listei, se fac pasii:


a. free(c);
b. p=c;c=c->adr;free(p);
____ 25. Se consideră implementarea unei liste simplu înlăntuite sub forma:
typedef struct nod{
int info;
struct nod *adr;
}lista;

lista *c /*capul listei*/


,*p,*q;

Presupunând că vrem să stergem elementul imediat următor celui pe care punctează p, se fac
pasii:
a. q=p->adr;free(q);p->adr=q->adr;
b. q=p->adr;p->adr=q->adr;free(q);
____ 26. Se consideră implementarea unei liste simplu înlăntuite sub forma:
typedef struct nod{
int info;
struct nod *adr;
}lista;

lista *c /*capul listei*/


,*p,*q;

Presupunând că vrem să inserăm un element după cel punctat de p, se fac pasii:


a. q=(lista*)malloc(sizeof(lista));p->adr=q;q->adr=p->adr;
b. q=(lista*)malloc(sizeof(lista));q->adr=p->adr; p->adr=q;

10
Name: ________________________ ID: A

____ 27. Se consideră implementarea unei liste simplu înlăntuite sub forma:
typedef struct nod{
int info;
struct nod *adr;
}lista;

lista *c /*capul listei*/


,*p,*q;

Ce efect are următoarea functie, dacă se apelează scriu(c)?


void scriu(lista* p) {
if(p) {scriu(p->adr);printf(“%d “,p->info);}
}
a. afisează lista de la primul la ultimul element
b. afisează lista de la ultimul element la primul
____ 28. Coada de priorităti este:
a. o structură de date care contine o multime S de elemente, fiecare având asociată o
valoare numită cheie; inserarea adaugă un element, iar extragerea unui element
returnează elementul cu prioritatea maximă
b. o structură de date care contine o multime S de elemente, în care intrările se fac la
un capăt al ei, iar iesirile la celălalt capăt
c. o structură de date care contine o multime S de elemente,în care intrările si iesirile
se fac la un singur capăt.

11

S-ar putea să vă placă și