Sunteți pe pagina 1din 36

UNIVERSITATEA TITU MAIORESCU

FACULTATEA DE INFORMATIC

MODELE NTREB RI EXAMEN LICEN

MODULUL 1
Limbaje i tehnici de programare

UNIVERSITATEA TITU MAIORESCU


FACULTATEA DE INFORMATIC

MODELE NTREB RI EXAMEN LICEN


Disciplina Programare procedurala

GRILE LICENTA
MODULUL LIMBAJE SI TEHNICI DE PROGRAMARE
Programare procedurala (Programare in limbajul C)

1. Ce afieaz urm toarea secven de program C?


int i = 3, j = 5;
int a = i + (++ j);
int b = (i ++) + j;
printf("%d %d %d %d", a, b, i, j);

A. 8 8 4 6
B. 8 9 4 6
C. 8 8 3 6
D. 9 9 3 6
E. 9 9 4 6
2. Dac j = -1 atunci evaluarea expresiei (j > 0) && (1 / (j + 1) > 10)
A. va genera mp r irea la zero
B. nu va genera mp r irea la zero
C. nu se poate face deoarece expresia are prea multe paranteze
D. nu se poate face deoarece operatorul && nu se foloseste in limbajul C.
3. Ce afieaz urm toarea secven de program C?
int i;
for (i = 2; (i<=10) && (i % 2 != 0); i++)
printf("%d\n", i );

A. 3 5 7 9
B. 2 4 6 8 10
C. nimic
D. 2
E. nu se compileaza
1

4. Ce se va afia pe ecran n urma execu iei urm torului program C?


#include <stdio.h>
#include <math.h>
int f(int a, int b, int c)
{
c = c + 5;
a = (int) sqrt(a);
b ++;
printf( "%d %d %d ", a, b, c);
return c < a + b;
}
int main()
{
int a = 9, b = 16, c = 25;
if( f(b, c, a) )
{ printf( "true " );
printf("%d %d %d", b, c, a );
}
else
{ printf( "false " );
printf("%d %d %d", a, c, b );
}
return 0;
}

A. 3 17 30 false 9 25 16
B. 3 17 30 true 16 25 9
C. 4 26 14 true 26 14 4
D. 4 26 14 false 4 14 26
E. 4 26 14 true 16 25 9
5. Ce afieaz urm toarea secven de program C?
int a[10] = {2, -1, 7, 5, 0, -3}, i;
for ( i = 1; i < 9; i ++)
if ( a[i+1] > 0 && 1/a[i] < 1) printf( "%d ", a[i]);

A. 7 5
B. -1 7
C. Nimic pentru cu sirul a nu este corect initializat
D. 7 5 0 -3
E. -1 7 si apoi se ob ine eroarea mp r ire la zero
6. Ce afieaz urm toarea secven de program dac este citit de la tastatur valoarea 10?
int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n, i;

printf( "Introduceti un intreg intre 1 si 10: ");


scanf("%d", &n);
for (i=0; i< n; i++)
switch (a[i])
{
case 5:

printf("%d ", ++ i ) ;

case 10: printf("%d ", ++ i );


default:

printf("%d ", i );

A. 0 1 2 3 4 5 6 7 8 9
B. 0 1 2 3 4 4 5 6 7 8 9
C. 0 1 2 3 5 6 6 7 8 10 10
D. 1 2 3 4 5 5 6 7 8 9 10
E. 1 2 3 4 5 5 6 7 7 8 9
7. Ce se va afia pe ecran n urma execu iei urm torului program C?
#include <stdio.h>
int main()
{
int x[5], i;
int *p;
p = x;
for (i = 0; i < 5; i ++)
*(x + i) = i;
printf ("%d ", *p );
printf ("%d ", p[0]);
printf ("%d ", *(p + 1));
printf ("%d ", (p + 1)[2]);
while (*p < 2)
printf("%d ", *(p ++));

printf("%d ", *(p + 1) );


printf("%d ", *p + 2 );
return 0;

A. 0 0 1 3 0 1 3 4
B. 0 0 1 3 0 1 2 4
C. 0 1 1 2 1 3 4
D. 0 0 1 3 0 1 2 3
8. Ce se ntmpl n urma execu iei urm torului program C dac fi ierul nr.txt con ine
valorile 1 2 3 4 1 ?
3

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *input, *output;
int i = 0; double s = 0;
double numar;
input = fopen( "nr.txt", "r");
output = fopen("abc.txt", "w");
fscanf(input, "%lf", &numar);
while(!feof(input))
{
fprintf(output, "%.0f\n", numar);
s += numar;
i ++;
fscanf(input, "%lf", &numar);
}
fprintf(output,"%.2f", s/i);
fclose(input);
fclose(output);
return 0;
}

A. Programul cite te toate numerele din fi ierul nr.txt, le scrie apoi n fi ierul abc.txt
fiecare num r pe o linie i afi eaz tot n fi ierul abc.txt valoarea 2.20
B. Programul cite te toate numerele din fi ierul nr.txt, le scrie apoi n fi ierul abc.txt
fiecare num r pe o linie i afi eaz tot n fi ierul abc.txt valoarea 2
C. Programul cite te toate numerele din fi ierul nr.txt, le scrie apoi tot n fi ierul nr.txt, la
sfr it, fiecare num r pe o linie i afi eaz n fi ierul abc.txt valoarea 2.20
D. Programul cite te toate numerele din fi ierul nr.txt, le scrie apoi tot n fi ierul nr.txt, la
nceput, fiecare num r pe o linie i afi eaz n fi ierul abc.txt valoarea 2.20
E. Programul cite te toate numerele din fi ierul nr.txt, le scrie apoi tot n fi ierul nr.txt, la
nceput, fiecare num r pe o linie i afi eaz tot n fi ierul nr.txt valoarea 2
n urma apel rii func iei fopen("abc.txt", "w"), dac fi ierul abc.txt nu se g se te n
directorul curent atunci
A. se semnaleaz o eroare de compilare
B. se creaz un fi ier gol abc.txt n directorul curent
C. se nchide fi ierul abc.txt
D. se caut n toate directoarele un fi ier cu acest nume i dac nu se g se te atunci
pe ecranul monitorului va apare mesajul "Fisier inexistent".
10. Se d urm toarea declaratie
9.

struct punct
{
double x;
double y;
} a[3];

Precizati care dintre urmatoarele afirmatii sunt adevarate:


A. Declararea variabilei a nu se poate face odata cu definirea tipului struct.
B. Nu se poate defini un vector de tip struct.
4

C. a este o variabila de tip vector de 3 intregi.


D. a[0].x este o variabila de tip double.
E. x.a[0] este o variabila de tip double.
11. Se considera urmatorul program C:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[50], i, n, t, m, k, j;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &a[i]);
for(i=0; i<n-1; i++)
{ m = a[i];k=i;
for(j=i+1;j<n; j++)
if(a[j]< m) { k=j; m=a[j];}
t=a[k]; a[k]=a[i]; a[i]=t;
}
for(i=0; i<n; i++)
printf("%d ", a[i]);
return 0;
}

tiind c datele de intrare sunt n = 7 i a = 7, 6, 5, 4, 3, 2, 1 care vor fi valorile vectorului


a la sfr itul programului?
A. a=7, 6, 5, 4, 3, 2, 1
B. a= 1, 2, 3, 4, 5, 6, 7
C. a=7, 2, 5, 3, 4, 6, 1
D. a=1, 7, 2, 6, 3, 5, 4
12. Precizati care dintre urmatoarele afirmatii sunt adevarate :
A. Func ia free din biblioteca stdlib.h se poate aplica oricarui pointer.
B. Functia malloc din biblioteca stdlib.h se poate aplica oricarui vector.
C. Functia malloc din biblioteca stdlib.h rezerva un num r de octeti n loca ii de
memorie consecutive returnnd un pointer la primul octet sau pointerul NULL
dac nu poate aloca memoria solicitat .
D. Functia free din biblioteca stdlib.h elibereaza zona de memorie rezervata unui
vector de intregi
13. Ce afieaz urm toarea secven de program C?
for (i = 1; i <= 10; i +=2)
if (i < 8 && i != 2) printf("x");

A.
B.
C.
D.
E.

x
xx
xxx
xxxx
xxxxxxx

14. Ce afieaz urm toarea secven de program C?


for (i = 1; i < 5; i += 2)
for (j = 1; j < 3; j ++)
printf("%d ", i * j );

A.
B.
C.
D.

1224
1236
123246
123369

15. Ce afieaz urm toarea secven de program C?


int *p1, *p2, a, b;
a = 10;
b = 20;
p1 = &a;
p2 = &b;
printf("%d %d ", *p1 , *p2 );
p1 = p2;
*p2 = 30;
a = 5;
printf ("%d %d ", a , b );
printf ("%d %d ",*p1 , *p2 );

A. 10 20 5 30 5 30
B. 10 20 5 20 5 20
C. 10 20 5 30 30 30
D. 10 20 5 20 30 30
16. Se considera urmatoarea definitie de tip in C:
struct nod
{
int x;
struct nod *next;
};

Precizati care dintre urmatoarele afirmatii sunt adevarate :


A. Definitia de mai sus se poate folosi pentru a implementa o lista simplu inlantuita.
B. Definitia de mai sus se poate folosi pentru a implementa o lista dublu inlantuita.
C. Definitia de mai sus nu se poate folosi pentru a implementa o stiva inlantuita.
D. Definitia de mai sus se poate folosi pentru a implementa un arbore binar.
17. Ce afieaz urm toarea secven a de program?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[50], b[50], i, n, t;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &a[i]);
for(i=0; i<n; i++)

b[i]=0;

for(i=0; i<n-1; i++)


for(j=i+1;j<n; j++)
if(a[j]< a[i]) b[i]++;
else b[j]++;
return 0;

Care vor fi valorile vectorului b la sfarsitul programului stiind ca la intrare avem valorile n =
7 si a = (2, 4, 5, 6, 7, 1, 3)?
A. (1, 3, 2, 2, 2, 0, 1)
B. (1, 3, 4, 5, 4, 0, 1)
C. (1, 3, 4, 3, 2, 0, 1)
D. (1, 3, 4, 5, 6, 0, 2)
E. (1, 3, 4, 5, 6, 0, 1)
18. Ce afieaz urm toarea secven a de program?
int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
int i,j, s=0;
for (i=0; i<2; i++)
for (j=3; j>0; j--)
s+=a[i][j];
printf("S=%d", s);

A. S=78
B. S=30
C. s=30
D. s=78
E. S=36
19. Care este functia cu doi parametrii de intrare, din biblioteca string.h, care copiaza un sir de
caractere in alt sir de caractere?
A. copy
B. strcpy
C. cpy
D. strncpy
E. copystr
20. Ce biblioteca trebuie inclusa intr-un program C pentru a putea folosi functia realloc()?
A. memory.h
B. studio.h
C. stdlib.h
D. alloc.h
7

UNIVERSITATEA TITU MAIORESCU


FACULTATEA DE INFORMATIC

MODELE NTREB RI EXAMEN LICEN


Disciplina Programare orientata pe obiecte (C++)

1. Fie secvena:
class cls{public:
cls( ){ cout<<constructor;}
cls(cls &c){cout<<constructor de copiere ;}};
int f(cls c){ return 1;}
int main()
{cls c; f(c);}
La execuia programului de mai sus:
a) constructorul de clas se apeleaz o dat, iar cel de copiere nu se apeleaz;
b) constructorii de clas i de copiere se apeleaz fiecare cte o dat;
c) constructorul de copiere se apeleaz o dat, iar cel de clas nu se apeleaz;
d) constructorul de clas se apeleaz de dou ori, iar cel de copiere nicio dat;
e) constructorul de clas i cel de copiere se apeleaz fiecare de cte dou ori.
2. Fie secvena:
class cls{
public: cls( ){ cout<<constructor;}
cls(cls &c){cout<<constructor de copiere ;}};
int f(cls &c){ return 1;}
int main()
{cls c; f(c);}
La execuia programului de mai sus:
a) constructorul clasei se apeleaz o dat, iar cel de copiere nu se apeleaz nicio dat;
b) constructorii de clas i de copiere se apeleaz fiecare cte o dat;
c) constructorul de copiere se apeleaz o dat, iar cel de clasa nu se apeleaz;
d) constructorul clasei se apeleaz de dou ori, iar cel de copiere nicio dat;
e) constructorul de clas i cel de copiere se apeleaz fiecare de cte doua ori.
3. Fie secvena:
class c { int a;
public:
virtual void metoda1( )=0;
virtual void metoda2( )=0;
};
int main()
{
c*pob;
// declaratia 1
c ob;
// declaratia 2
c*vpob[5]; // declaratia 3
c vob[5]; // declaratia 4
}
Declaraiile admise n acest caz sunt:
a) 1+2
b) 1
c) 2+4

d) 3
e) 1+2+3
4. Consderm urmtoarea secven:
class c1{public:int a;
c1(int y )
{ a=y;cout<<constructor 1;}
~c1(){cout<<destructor 2;}};
class c2:public c1
{public: int b;
c2(int y, int x):c1(y)
{ b=x;
cout<<constructor 2;}
~c2(){cout<<destructor 2;}};
int main( )
{ c1 ob1(2);
c2 ob2(2,3);}
Secvena afieaz:
a) constructor 2 constructor 1 constructor 2 destructor 2 destructor 1
b) constructor 1 constructor 1 constructor 2 destructor 2 destructor 1
c) constructor 1 constructor 2 constructor 1 destructor 1 destructor 2
d) constructor 1 constructor 1 constructor 2
5. Fie urmtorul program C++:
#include <iostream.h>
class B{ public: B(){cout<<"B()"<<endl;}
~B(){cout<<"~B()"<<endl;}
};
class D: public B{ public: D(){cout<<"D()"<<endl;}
~D(){cout<<"~D()"<<endl;}
};
int main(){
B *b=new B();
delete b;
b=new D();
delete b;
}
Programul afieaz:
a) B() ~B() B() D() ~D()
b) B() ~B() B() D() ~B()
c) B() ~B() B() ~B()
d) B() ~B() D() ~B()

6. Fie programul:
#include <iostream.h>
class B{ public: B(){cout<<"B()"<<endl;}

B(B &b){cout<<"B(B &b)"<<endl;}


};
class D: public B{ public: D(){cout<<"D()"<<endl;}
D(D &d){cout<<"D(D &d)"<<endl;}
};
int main(){
B b;
B b1(b);
D d;
D d1(d);
}
Programul afieaz:
a) B() B(B&b) B() D() B(B &b) D(D &d)
b) B() B() B(B&b) B() D() B(B &b) D() B(B &b)
c) B() B(B&b) D() B(B &b) D() B(B &b)
d) B() B(B&b) B() D() B() D(D &d)
7. Considerm urmtorul program C++:
class persoana
{int varsta;
public:
persoana(int v=18){varsta=v;}
persoana& operator++(int)
{varsta++;
return *this;}
int get_varsta(){return varsta;}};
int main(){
persoana p(20);
cout<<p++. get_varsta() ;}
Programul afieaz:
a) 21
b) 20
c) 18
d) 19
8. Fie urmtorul program C++:
#include<iostream.h>
class B
{ int x;
friend void f(B);
public: B(int i=0){x=i;}};
class D: public B
{ int y;
public: D(int i=0,int j=1):B(i)
{y=j;}};
void f(B b ){cout<<b.x<<endl;}
int main( ){ B b; D d; f(b); f(d);}

Funcia declarat friend n clasa de baz:


a) rmne friend n clasa derivat, pentru partea motenit;
b) are acces pe toat clasa derivat;
c) nu are acces pe zonele private i protected ale clasei derivate;
d) nu are acces pe zona private a clasei derivate;
e) are acces pe zonele public i protected ale clasei derivate.
8. Se consider secvena de program:
class B {
private:
int x,y;
public:
B(int a,int b){ x=a;y=b; }
B(const B &a){x=a.x; y=a.y;}};
n care din urmtoarele situaii se realizeaz copierea unui obiect ntr-altul:
a) B c1(4,5)
b) B c2(0.0, 0,0)
c) B c3=c1
d) B c4(1)
e) B c5(c1)
10. Considerm urmtorul program:
#include <iostream.h>
class B {
public:
virtual void f() { cout<<"B::f() ";}
void g() { cout<<"B::g() ";}};
class D1: public B{
public:
void f() { cout<<"D1::f() ";}
void g() { cout<<"D1::g() ";}};
class D2: public B{
public:
void g() { cout<<"D2::g() ";}};
int main(){
int i;
B *a =new B();
B *b= new D1();
B* c= new D2();
a->f();
b->f();
c->f();
a->g();
b->g();
c->g();
}
Ce se va afia pe ecran n urma execuiei sale?
a) B::f() D1::f() B::f() B::g() B::g() B::g()

b) D2::f() D1::f() B::f() B::g() B::g() B::g()


c) B::f() D1::f() D::f() B::g() D1::g() D2::g()
d) B::f() D1::f() B::f() B::g() D1::g() D2::g()
e) B::f() B::f() D2::f() B::g() B::g() D2::g()
11. Considerm programul C++ urmtor:
#include<iostream.h>
class salariat
{ int varsta;
public:
salariat (int v=20) {varsta =v;}
operator int() { return varsta;}
salariat& operator++( )
{varsta++; return *this;}
salariat operator++ (int)
{ varsta++; return *this;}};
int main()
{ salariat s(21);
int a =s++, b=++s;
cout<<a<< <<b<<endl;
}
Programul afieaz:
a)
b)
c)
d)
e)

20
21
22
20
21

21
22
23
22
23

12. Fie programul:


#include <iostream.h>
class Cerc{
public:
float raza;
Cerc(float r){raza=r;}
float get_raza(){return raza;}
Cerc operator++(){raza++;return *this;}
Cerc operator--(){raza--;return *this;}};
int main(){ Cerc c(3.5);
cout<<(++(++c)).get_raza()<< ;
cout<<c.get_raza()<< ;
cout<<(--(--c)).get_raza()<< ;
cout<<c.get_raza()<< ;
}
Programul afieaz:
a)
b)
c)
d)

3.5
5.5
2.5
5.5

4.5
4.5
5.5
4.5

2.5
2.5
4.5
2.5

3.5
2.5
3.5
3.5

e) 4.5 2.5 3.5 5.5


13. O metod static a unui obiect se caracterizeaz prin faptul c:
a) nu primete pointerul la obiect this;
b) folosete numai datele publice;
c) se poate apela prin numele clasei;
d) nu poate fi definit dect inline;
e) dac prelucreaz obiecte, primete obiectele ca parametrii explicii.
14. n secvena de program
# include <iostream.h>
class C {public: static int s;};
int C::s=0;
int main()
{ int a=7; C::s=a; cout<<C::a;}
utilizarea lui s este:
a) ilegal, deoarece nu exist niciun obiect creat;
b) ilegal, deoarece s este iniializat n afara clasei;
c) ilegal, deoarece s este dublu definit, n clas i n afara ei;
d) ilegal, deoarece datele statice pot fi doar private;
e) corect, deoarece membrii statici exist nainte de a se crea obiecte din clas.
15. Fie secvena:
class complex
{double re;
double im;
public:
complex(double x=1.0,double y=6.80)
{re=x; im=y;}
complex( const complex &u)
{real=u.re;imag=u.im;}};
Precizai n ce situaie se utilizeaz constructorul de copiere:
a) complex z1(5.2, 3.6);
b) complex z2=z1;
c) complex z3(0.1,1.0);
d) complex z4(z1);
e) complex z5(-0.1,28.7).
16. Secvena
class A1 {public:
A1()
{cout << "\n A1";}};
class A2 {public:
A2()
{cout << "\n A2";}};
class AA1 : public A1, virtual public A2 {
public:

AA1()
{cout << "\n AA1";}};
class AA2 : public A1, virtual A2 {
public:
AA2()
{cout << "\n AA2";}};
class B : public AA1, virtual public AA2 {
public:
B()
{cout << "\n B";}};
int main()
{B ob1;}
afieaz:
a) A1 A2 AA2 A1 AA1 B
b) A2 A2 AA2 AA1 A1 B
c) A1 A2 AA2 A1 B AA1
d) A2 A1 AA2 A1 AA1 B
e) A2 A1 A2 AA1 A1 B
17. Care dintre afirmaiile urmtoare sunt adevrate?
a) precedena unui operator poate fi modificat prin redefinire;
b) aritatea unui operator nu poate fi modificat prin redefinire;
c) asociativitatea unui operator poate fi modificat prin redefinire;
d) semnificaia modului n care acioneaz un operator asupra obiectelor de tipuri predefinite nu
poate fi schimbat prin redefinire.
18. Care dintre afirmaiile urmtoare sunt adevrate?
a) funciile inline nu pot fi funcii virtuale;
b) constructorii pot fi funcii virtuale;
c) orice funcie membru static este funcie virtual;
d) destructorul poate fi funcie virtual.
19. Fie programul:
#include <iostream.h>
class Cerc{float raza;
public:
Cerc(float r){raza=r;}
float get_raza(){return raza;}
void operator++(){raza++;}};
class Cilindru: public Cerc{float inaltime;
public:
Cilindru(float raza, float i):Cerc(raza){inaltime=i;}
void operator++(){inaltime++;}
float get_inaltime(){return inaltime;}};
int main(){
Cerc *pc;
Cilindru c(2,6);
pc=&c;
++ *pc;

cout<<pc->get_raza()<<" "<<c.get_inaltime()<<endl;}
Programul afieaz:
a)
b)
c)
d)

2
2
3
2

5
6
6
5

20. Care dintre afirmaiile urmtoare sunt false?


a) obiectele unei clase derivate au acces la membrii privai ai clasei sale de baz;
b) relaia de motenire este tranzitiv;
c) funciile friend ale clasei de baz se motenesc de ctre clasa derivat;
d) constructorul i destructorul clasei de baz se motenesc n clasa derivat.

UNIVERSITATEA TITU MAIORESCU


FACULTATEA DE INFORMATIC

MODELE NTREB RI EXAMEN LICEN


Disciplina Programare in Java

1. Fie urmtoarea clas Java:


class C
{
int a;
float x;
boolean b;
}

Stabilii care dintre urmtoarele instruciuni este corect:


a)
b)
c)
d)

C
C
C
C

ob
ob
ob
ob

=
=
=
=

new
new
new
new

C(1);
C(1,1.0);
C();
C(1,1.0,true);

2. Fie urmtorul program Java:


class C
{
public static int a=1;
}
public class test
{
public static void main(String[] args)
{
C ob=new C();
C.a++;
ob.a++;
System.out.println(C.a);
}
}

Dup executarea programului, va fi afiat valoarea:


a)
b)
c)
d)

3;
2;
1;
nicio valoare, deoarece programul este incorect sintactic i nu va putea fi executat.

3. Fie urmtorul program Java:


class C { public static int a=1; }
public class teste_grila
{
public static void main(String[] args)
{
C ob1=new C();
C ob2=new C();
ob1.a++;
System.out.println(ob2.a);
}
}

Dup executarea programului, va fi afiat valoarea:


a)
b)
c)
d)

0;
2;
1;
nicio valoare, deoarece programul este incorect sintactic i nu va putea fi executat.

4. Un program Test scris n limbajul Java poate fi compilat folosind comanda:


a)
b)
c)
d)

javac Test
java Test.java
javac Test.class
javac Test.java

5. Un program Test scris n limbajul Java i compilat, poate fi rulat folosind comanda:
a)
b)
c)
d)

javac Test.java
java Test
java Test.class
java Test.java

6. n Java o clas poate extinde:


a)
b)
c)
d)

cel mult o interfa


oricte clase
cel mult o clas
oricte interfee

7. n Java o interfa poate extinde:


a)
b)
c)
d)

cel mult o interfat


oricte interfee
cel mult o clas
oricte clase

8. n Java o clas poate implementa:


a)
b)
c)
d)

o clas
oricte clase
o interfa
oricte interfee

9. Fie urmtorul program Java:


class A
{
public A() { System.out.println("A"); }
}
class B extends A
{
public B() { System.out.println("B"); }

}
class C extends B
{
public C() { System.out.println("C"); }
}
public class test
{
public static void main(String[] args)
{
C ob=new C();
}
}

Dup executarea programului, se va afia:


a)
b)
c)
d)

ABC
A
CBA
C

10. Fie urmtorul program Java:


class A
{
public int x=1;
public A() { x++; }
}
class B extends A
{
public B() { x++; }
}
class C extends B
{
public int x=1;
public C() { x++; }
}
public class test
{
public static void main(String[] args)
{
B b=new B();
C c=new C();
System.out.println(b.x+" "+c.x);
}
}

Dup executarea programului, se va afia:


a)
b)
c)
d)

3
3
2
3

4
2
2
3

11. Fie urmtorul program Java:


class A
{
int x=0;
public A(int n) { x=n; }
}
class B extends A
{
int x=1;
public B(int n) { super(n); }
}
public class test
{
public static void main(String[] args)
{
A a=new A(5);
B b=new B(7);
System.out.println(a.x+" "+b.x);
}
}

Dup executarea programului, se va afia:


a)
b)
c)
d)

0
5
5
0

5
1
7
1

12. Fie urmtorul program Java:


interface Student { public void afisare(); }
class Student_1 implements Student
{
String nume;
int grupa;
public Student_1(String n, int g) { nume=n; grupa=g; }
public void afisare() { System.out.print(nume+" "+grupa+" "); }
}
class Student_2 extends Student_1 implements Student
{
String curs;
int nota;
public Student_2(String ns, int g, String c, int n)
{
super(ns,g);

curs=c;
nota=n;
}
public void afisare()
{
..................................
System.out.println(curs+" "+nota);
}
}
public class test
{
public static void main(String[] args)
{
Student_2 s=new Student_2("Popescu",314,"Java",10);
s.afisare();
}
}

Dup executarea programului, pentru a se afisa Popescu 314 Java 10, spaiile punctate
din metoda afisare a clasei Student_2 trebuie nlocuite cu:
a)
b)
c)
d)

afisare();
Student_1.afisare();
super.afisare();

nimic, deoarece se apeleaz automat metoda afisare a clasei Student_1.

13. Fie urmtorul program Java:


interface Student { public void afisare(); }
class Student_1 implements Student
{
String nume;
int grupa;
public Student_1(String n, int g) { nume=n; grupa=g; }
public void afisare() { System.out.print(nume+" "+grupa+" "); }
}
class Student_2 extends Student_1 implements Student
{
String curs;
int nota;
public Student_2(String ns, int g, String c, int n)
{
.......
curs=c;
nota=n;
}
public void afisare()
{
super.afisare();

System.out.println(curs+" "+nota);
}
}
public class test
{
public static void main(String[] args)
{
Student_2 s=new Student_2("Popescu",314,"Java",10);
s.afisare();
}
}

Dup executarea programului, pentru a se afia Popescu 314 Java 10, spaiile punctate
din constructorul Student_2 al clasei Student_2 trebuie:
a) s fie nlocuite cu instruciunea super(ns,g);
b) s fie nlocuite cu instruciunile nume=ns; grupa=g;
c) nu trebuie nlocuite cu nimic, deoarece se apeleaz automat constructorul Student_1 al
clasei Student_1;
d) nu pot fi nlocuite cu nimic, deoarece programul fiimd incorect pentru ca metoda
afisare a interfeei Student este implementat n dou clase diferite, Student_1 i
Student_2.

14. Fie urmtoarele declaraii n Java:


interface Patrat
{
public float aria();
public float perimetru();
}
class Patrat_1 implements Patrat
{
float L;
public Patrat_1(float x) { L = x; }
public float aria() { return L*L; }
}
class Patrat_2 extends Patrat_1 implements Patrat
{
public Patrat_2(float L) { this.L = L; }
public float perimetru() { return 4*L; }
}

Stabilii care dintre urmtoarele propoziii sunt adevrate:


a) definiia clasei Patrat_1 este incorect deoarece nu implementez metoda perimetru a
interfeei Patrat;
b) constructorul clasei Ptrat_2 este incorect deoarece nu are acces la pointerul this;
c) constructorul clasei Ptrat_2 este incorect deoarece nu are apeleaz constructorul
superclasei Patrat_1;
d) definiia clasei Patrat_2 este incorect deoarece nu implementez metoda aria a
interfeei Patrat.

15. Fie urmtorul program Java:


interface Patrat
{
float L = 0;
public float aria();
public float perimetru();
}
class Patrat_1 implements Patrat
{
float L = 5;
public Patrat_1(float x) { L = x; }
public float aria() { return L*L; }
public float perimetru() { return 4*L; }
}
public class teste_grila
{
public static void main(String[] args)
{
Patrat p = new Patrat_1(10);
System.out.println(p.aria() + p.perimetru());
}
}

Stabilii care dintre urmtoarele propoziii sunt adevrate:


a) programul este incorect deoarece n funcia main se instaniaz o interfa, ci nu o clas;
b) programul este corect i dup rulare va afia 140.0;
c) programul este incorect deoarece n clasa Patrat_1 se redefinete ca i data membru
constanta L din interfaa Patrat;
d) programul este corect i dup rulare va afia 100.0 40.0.
16. Fie urmtorul program Java:
interface Patrat
{
public float A();
public float P();
}
interface Dreptunghi
{
public float A();
public float P();
}
class Patrulater_1 implements Patrat,Dreptunghi
{
float L;
public Patrulater_1(float x) { L=x; }
public float A() { return L*L; }
public float P() { return 4*L; }

}
class Patrulater_2 implements Patrat, Dreptunghi
{
float L,l;
public Patrulater_2(float x, float y) { L=x; l=y; }
public float A() { return L*l; }
public float P() { return 2*(L+l); }
}
public class teste_grila
{
public static void main(String[] args)
{
Dreptunghi d = new Patrulater_1(10);
Patrat p = new Patrulater_2(10,20);
System.out.println(d.A()+" "+d.P()+" "+p.A()+" "+p.P());
}
}

Stabilii care dintre urmtoarele propoziii sunt adevrate:


a) programul este incorect deoarece apare un conflict de nume pentru ca n interfeele
Patrat i Dreptunghi sunt definite metode cu aceiasi signatura, iar clasele
Patrulater_1 i Patrulater_2 implementeaz fiecare ambele interfee;
b) programul este incorect deoarece n interfeele Patrat i Dreptunghi sunt definite
metodele A i P cu aceiasi signatura, iar clasele Patrulater_1 i Patrulater_2
implementeaz fiecare n mod diferit cele dou metode;
c) programul este corect i dup rulare va afia 100.0 40.0 200.0 60.0;
d) programul este incorect deoarece n funcia main i se atribuie instanei d a interfeei
Dreptunghi un obiect din clasa Patrulater_1 , iar instanei p a interfeei Patrat un
obiect de tip Patrulater_2 (care, de fapt, abstractizeaz noiunea de dreptunghi).
17. Considerm urmtorul program Java:
class C
{
int a,b;
public C(int x, int y) { a=x; b=y; f(); g(); }
void f()
{
while(a<b)
{
b=b-2*a;
a=a+b/10;
System.out.println(a+" "+b);
}
}
void g() { System.out.println(a+" "+b);

}
public class test
{
public static void main(String[] args)
{
C ob = new C(5,100);
}
}

Dup executarea programului, pe ecran se va afia:


a)
b)
c)
d)

20 -22
22 22
35 10
5 100

18. Considerm urmtorul program Java:


class C
{
int a,b;
public C(int x, int y) { a=x; b=y; }
void f()
{
if(a<b) { a++; b--; g(); }
}
void g()
{
if(b>=a) { a++; b--; f(); }
}
void afisare() { System.out.println(a+" "+b); }
}
public class teste_grila
{
public static void main(String[] args)
{
C ob = new C(2,10);
ob.f(); ob.g();
ob.afisare();
}
}

Dup executarea programului, pe ecran se va afia:


a)
b)
c)
d)

5
6
2
7

7
6
10
5

19. Considerm urmtorul program Java:


class C
{
static int x = 0;
static int f() { return (++x)*(x--); }
}
public class teste_grila
{
public static void main(String[] args)
{
System.out.println(C.f()+" "+C.f()+" "+C.f());
}
}

Dup executarea programului, pe ecran se va afia:


a)
b)
c)
d)

1
1
1
0

1
2
2
0

1
3
6
0

20. Considerm urmtorul program Java:


class C
{
static int x=0;
static void f()
{
x = (++x)*(x--);
System.out.print(x+" ");
}
}
public class teste_grila
{
public static void main(String[] args)
{
C.f();C.f();C.f();
}
}

Dup executarea programului, pe ecran se va afia:


a)
b)
c)
d)

0
1
1
2

0 0
4 25
-1 1
4 16

21. Un fir de execuie poate intra n starea "blocat" (blocked) astfel:


a)
b)
c)
d)

prin apelul metodei sleep();


automat de ctre sistemul de operare;
prin apelul metodei block();
prin apelul metodei wait().

22. Prin modalitatea sa de tratare a excepiilor, Java are urmtoarele avantaje fa de


mecanismul tradiional de tratare a erorilor:
a)
b)
c)
d)

exist o metod care se ocup de acest lucru;


separarea codului pentru tratarea unei erori de codul n care ea poate sa apar;
propagarea unei erori pna la un analizor de excepii corespunztor;
gruparea erorilor dupa tipul lor.

23. O subclas a unei clase abstracte poate fi instaniat numai dac:


a) se folosete cuvantul cheie abstract;
b) suprascrie fiecare metod declarat abstract n superclasa sa i furnizeaza implementri
pentru toate acestea;
c) se folosete motenirea multipl;
d) subclas abstract nu poate fi instaniat.
24. Care este rolul declaraiilor import?
a)
b)
c)
d)

Permite referirea claselor fr utilizarea de prefixe;


Permite importul imaginilor folosite;
Elimin necesitatea declarrii variabilelor;
Elimin apelurile directe ale funciilor fr clase.

25. Indicai pe care dintre sistemele de operare urmtoare pot fi rulate aplicaiile Java:
a)
b)
c)
d)

Windows
UNIX
Mac OS X
Linux

UNIVERSITATEA TITU MAIORESCU


FACULTATEA DE INFORMATIC

MODELE NTREB RI EXAMEN LICEN


Disciplina Tehnici de programare

1) Complexitatea minim a unui algoritm care calculeaz numrul tuturor submulimilor


unei mulimi cu n elemente este:
a)
b)
c)
d)

O(n2)
O(2n)
O(n)
O(1)

2) Complexitatea minim a unui algoritm care s afieze toate submulimile unei mulimi
cu n elemente este:
a)
b)
c)
d)

O(n2)
O(2n)
O(n)
O(log2n)

3) Complexitatea minim a unui algoritm care s calculeze numrul modurilor n care pot
fi aezate n cri pe un raft suficient de lung este:
a)
b)
c)
d)

O(n)
O(n2)
O(2n)
O(1)

4) Complexitatea minim a unui algoritm care s afieze toate modurile n care pot fi
aezate n cri pe un raft suficient de lung este:
a)
b)
c)
d)

O(n)
O(1)
O(2n)
O(n!)

5) Dac ultima soluie afiat de ctre algoritmul backtracking pentru generarea tuturor
permutrilor mulimii {1,2,,n} este 7,6,3,5,4,2,1, atunci urmtoarea soluie care va fi
afiat este:
a)
b)
c)
d)

7,6,4,1,2,5,3
7,1,2,3,4,5,6
7,6,4,1,2,3,5
7,6,5,3,4,2,1

6) Dac ultima soluie afiat de ctre algoritmul backtracking pentru generarea tuturor
permutrilor mulimii {1,2,,7} este 6,5,7,4,3,2,1, atunci urmtoarea soluie care va fi
afiat este:
a)
b)
c)
d)

7,1,2,3,4,5,6
6,7,1,2,3,4,5
7,6,1,2,3,4,5
6,7,5,4,3,2,1

7) Considerm un rucsac cu ajutorul cruia putem transporta 66 kg i 7 obiecte avnd


greutile 23, 10, 10, 25, 38, 7 i 5 kg, iar ctigurile obinute prin transportul integral al
fiecrui obiect la destinaie sunt 69, 10, 30, 100, 19, 14 i 50 RON. tiind c din orice
obiect putem ncrca i doar o parte a sa, ctigul maxim pe care l putem obine este:
a)
b)
c)
d)

250.5 RON
217 RON
265 RON
255 RON

8) Considerm un rucsac cu ajutorul cruia putem transporta 67 kg i 7 obiecte avnd


greutile 10, 5, 20, 10, 20, 25 i 21 kg, iar ctigurile obinute prin transportul integral
al fiecrui obiect la destinaie sunt 30, 40, 40, 10, 4, 50 i 30 RON. tiind c din oricare
obiect putem ncrca i doar o parte a sa, ctigul maxim pe care l putem obine este:
a)
b)
c)
d)

114 RON
170 RON
280 RON
163.7 RON

9) Considerm un rucsac cu ajutorul cruia putem transporta 53 kg i 7 obiecte avnd


greutile 10, 5, 18, 10, 8, 20 i 40 kg, iar ctigurile obinute prin transportul integral al
fiecrui obiect la destinaie sunt 30, 40, 36, 10, 16, 10 i 30 RON. tiind c din oricare
obiect putem ncrca i doar o parte a sa, ctigul maxim pe care l putem obine este:
a)
b)
c)
d)

133 RON
121 RON
133.5 RON
136.5 RON

10) Considerm urmtorul algoritm, n care a este un tablou format din n numere ntregi:
i  1
j  n
ct timp (in) i (ai<0) execut
i  i+1

ct timp (j1) i (aj0) execut


j  j-1

dac(i>=j)
atunci

scrie 1
altfel

scrie 0

Complexitatea algoritmului dat este:


a)
b)
c)
d)

O(n2)
O(log2n)
O(n3)
O(n)

11) Un algoritm optim care s afieze toate subirurile cresctoare de lungime maxim ale
unui ir format din n numere folosete:
a) doar metoda programrii dinamice;
b) doar metoda backtracking (se genereaz toate subirurile irului respectiv, iar pentru
fiecare subir se verific dac este cresctor i, respectiv, maximal);
c) mai nti metoda programrii dinamice pentru a determina lungimea maxim lmax a
unui subir cresctor al irului dat i apoi metoda backtracking pentru a genera toate
subirurile cresctoare de lungime lmax ale irului considerat;
d) doar metoda Greedy.
12) Stabilii care dintre urmtoarele propoziii referitoare la tehnica de programare Greedy
este adevrat:
a) conduce ntotdeauna la o soluie optim;
b) construiete o soluie element cu element i n cazul n care valoarea elementului
curent nu verific anumite condiii se renun la acesta i se revine la elementul
anterior;
c) gsete ntotdeauna o singur soluie a unei probleme;
d) construiete o soluie element cu element, fr a reveni asupra alegerii fcute pentru
elementul curent.
13) Considerm c ntr-un an sunt nscrii n studeni. Pentru a afia toate grupele ce pot fi
formate din cte p studeni (pn) din anul respectiv putem folosi algoritmul de:
a)
b)
c)
d)

generarea a aranjamentelor formate din p elemente ale unei mulimi cu n elemente;


generarea a permutrilor unei mulimi cu p elemente;
generarea a combinrilor formate din p elemente ale unei mulimi cu n elemente;
generarea a aranjamentelor formate din n elemente ale unei mulimi cu p elemente.

14) Stabilii care dintre urmtoarele metode de sortare se bazeaz pe tehnica de


programare Divide et Impera:
a)
b)
c)
d)

sortarea rapid;
sortarea prin interschimbare ;
sortarea prin interclasare;
sortarea prin numrare.

15) Considernd c a este un tablou format din n numere ntregi nenule i am definit
anterior un subprogram cmmdc(x,y) care returneaz cel mai mare divizor comun a dou
numere ntregi nenule x i y, construim urmtorul subprogram:
subprogram F(p,u)
dac p=u
atunci

F  a[p]
altfel

k  [(p + u)]/2

F  cmmdc(F(p,k),F(k+1,u))

tiind c apelul subprogramului va fi F(1, n), precizai tehnica de programare utilizat n


cadrul funciei F:
a)
b)
c)
d)

Greedy;
backtracking;
programare dinamic;
Divide et Impera.

16) Folosind tehnica de programare backtracking pentru a genera toate permutrile mulimii
{1,2,...,n}, o soluie se memoreaz sub forma unui tablou unidimensional x1, x2, ..., xn. Dac
au fost deja generate valori pentru componentele x1, x2, ..., xk-1, iar pentru componenta xk (1
<k<n) au fost deja testate toate valorile posibile i nu a fost gasit niciuna convenabil,
atunci:
a)
b)
c)
d)

se ncearc alegerea unei noi valori pentru xk-1;


se ncearc alegerea unei noi valori pentru x1, oricare ar fi valoarea lui k;
se ncheie algoritmul;
se ncearc alegerea unei valori pentru componenta xk+1.

17) Considerm ecuaia a1x1+a2x2++anxn=y, n care y, a1, a2,,an sunt numere naturale.
Pentru a determina toate soluiile ecuaiei date de forma (x1, x2,...,xn), cu x1, x2,...,xn numere
naturale, se poate folosi direct algoritmul backtracking pentru:
a)
b)
c)
d)

generarea permutrilor;
descompunerea unui numr natural ca sum de numere naturale nenule;
plata unei sume folosind n tipuri de bancnote;
generarea combinrilor.

18) Stabilii care dintre urmtorii algoritmi din teoria grafurilor se bazeaz pe tehnica de
programare Greedy:
a)
b)
c)
d)

algoritmul lui Kruskal;


algoritmul pentru determinarea componentelor conexe ale unui graf neorientat;
algoritmul lui Prim;
algoritmul Roy-Floyd.

19) Stabilii care dintre urmtorii algoritmi din teoria grafurilor se bazeaz pe metoda
programrii dinamice:
a)
b)
c)
d)

algoritmul lui Kruskal;


algoritmul de parcurgere n adncime a unui graf neorientat;
algoritmul lui Prim;
algoritmul Roy-Floyd.

20) La un ghieu stau la coad n persoane, numerotate cu 1,2,...,n. Cunoscnd timpii de


servire t1, t2,...,tn ai celor n persoane i tiind c pentru a servi o persoan k trebuie servite
persoanele 1,2,...,k-1 aflate naintea sa, trebuie s determinm un mod de rearanjare al
persoanelor la coad, astfel nct timpul de ateptare al fiecrei persoane s fie minim.

Stabilii care dintre urmtoarele variante de rezolvare a acestei probleme este corect i are o
complexitate minim:
a) se generez toate modurile n care pot fi rearanjate cele n persoane la coad i
pentru fiecare mod de rearanjare se calculeaz ntr-un tablou timpii de servire, iar
soluia este tabloul minim n sens lexicografic;
b) se rearanjeaz persoanele n ordinea descresctoare a timpilor de servire;
c) se generez toate modurile n care pot fi rearanjate cele n persoane la coad i
pentru fiecare mod de rearanjare se calculeaz timpul total T de servire al celor n
persoane, iar soluia este tabloul pentru care valoarea lui T este minim;
d) se rearanjeaz persoanele n ordinea scresctoare a timpilor de servire.

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