Documente Academic
Documente Profesional
Documente Cultură
Modulul1 Grile Cristi PDF
Modulul1 Grile Cristi PDF
FACULTATEA DE INFORMATIC
MODULUL 1
Limbaje i tehnici de programare
GRILE LICENTA
MODULUL LIMBAJE SI TEHNICI DE PROGRAMARE
Programare procedurala (Programare in limbajul C)
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
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("%d ", ++ i ) ;
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 ++));
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];
A.
B.
C.
D.
E.
x
xx
xxx
xxxx
xxxxxxx
A.
B.
C.
D.
1224
1236
123246
123369
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;
};
b[i]=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
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;}
20
21
22
20
21
21
22
23
22
23
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
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
C
C
C
C
ob
ob
ob
ob
=
=
=
=
new
new
new
new
C(1);
C(1,1.0);
C();
C(1,1.0,true);
3;
2;
1;
nicio valoare, deoarece programul este incorect sintactic i nu va putea fi executat.
0;
2;
1;
nicio valoare, deoarece programul este incorect sintactic i nu va putea fi executat.
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
o clas
oricte clase
o interfa
oricte interfee
}
class C extends B
{
public C() { System.out.println("C"); }
}
public class test
{
public static void main(String[] args)
{
C ob=new C();
}
}
ABC
A
CBA
C
3
3
2
3
4
2
2
3
0
5
5
0
5
1
7
1
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();
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.
}
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());
}
}
}
public class test
{
public static void main(String[] args)
{
C ob = new C(5,100);
}
}
20 -22
22 22
35 10
5 100
5
6
2
7
7
6
10
5
1
1
1
0
1
2
2
0
1
3
6
0
0
1
1
2
0 0
4 25
-1 1
4 16
25. Indicai pe care dintre sistemele de operare urmtoare pot fi rulate aplicaiile Java:
a)
b)
c)
d)
Windows
UNIX
Mac OS X
Linux
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
250.5 RON
217 RON
265 RON
255 RON
114 RON
170 RON
280 RON
163.7 RON
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
dac(i>=j)
atunci
scrie 1
altfel
scrie 0
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)
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))
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)
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)
19) Stabilii care dintre urmtorii algoritmi din teoria grafurilor se bazeaz pe metoda
programrii dinamice:
a)
b)
c)
d)
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.