Sunteți pe pagina 1din 11

Grile – Admitere

1. Se consideră următoarea declarație în C/C++: char s[10];. Cât spațiu de memorie se ocupă dacă
de la tastatură se citește valoarea “info” (ghilimele se exclud) dacă presupunem că un caracter
este reprezentat pe un octet?
a)4 octeți b)9 octeți c)10 octeți d)5 octeți
2. Fie s și x două șiruri ce pot memora maxim 30 de caractere. Ce se va afișa pe ecran după
executarea secvenței de instrucțiuni de mai jos dacă inițial șirul s are valoarea:
"admitere2022iulie" ?
char s[31]="admitere2022iulie", x[31]="";
cout<<strlen(strcat(s,strcpy(x,strchr(s,'2'))));
a)26 b)22iulie c)18 d)26iulie
3. Pentru un număr natural n, se definește funcția φ(n) a cărei valoare este egală cu numărul
numerelor naturale mai mici decât n și prime cu el. Prin definiție φ(1)=1, iar φ(2)=1, φ(3)=2
(numerele prime cu 3 sunt 1 s, i 2), φ(12)=4 (numerele prime cu 12 și mai mici decât 12 sunt 1, 5,
7, 11). Care dintre funcțiile următoare calculează și memorează într-un vector valorile funcției φ
pentru un șir de m numere naturale și care este secvența de cod care realizează apelul corect al
acestei funcții? Se cunoaște că șirul de numere naturale este memorat în tabloul x, valorile
funcției φ sunt memorate în vectorul fi, funcția prim returnează valoarea 1 dacă argumentul
funcției este un număr prim și 0 în caz contrar, iar funcția cmmdc returnează cel mai mare divizor
comun al celor două numere transmise ca argumente.
a)Funcția este:
void functie (int a [], int fi [], int m)
{
int i ;
int contor ;
for (i =0; i<m; i++)
{
if (a[i] == 1)
contor = 1 ;
else if (prim(a[i]))
contor = a[i] - 1 ;
else
{
contor = 1 ;
int j ;
for ( j=2; j<a[i] ; j++)
if (cmmdc(j, a[i]) == 1)
contor++;
}
fi[i] = contor ;
}
}
iar apelul corect al funcției este: functie (int x , int f i , int m) ;
b) void functie (int a [], int fi [], int m)
{
int i ;
int contor ;
for (i =0; i<m; i++)
{
if (a[i] == 1)
contor = 1 ;
else if (prim(a[i]))
contor = a[i] - 1 ;
else
{
contor = 1 ;
int j ;
for ( j=2; j<a[i] ; j++)
if (cmmdc(j, a[i]) == 1)
contor++;
}
fi[i] = contor ;
}
}
iar apelul corect al funcției este: functie (x , f i , m) ;

c) void functie (int a [], int fi [], int m)


{
int i ;
int contor ;
for (i =0; i<m; i++)
{
if (a[i] == 1)
contor = a[i] - 1;
else if (prim(a[i]))
contor = 1 ;
else
{
contor = 1 ;
int j ;
for ( j=2; j<a[i] ; j++)
if (cmmdc(j, a[i]) == 1)
contor++;
}
fi[i] = contor ;
}
}
iar apelul corect al funcției este: functie (x , f i , m) ;
d) void functie (int a [], int fi [], int m)
{
int i ;
int contor ;
for (i =0; i<m; i++)
{
if (a[i] == 1)
contor = a[i]-1 ;
else if (prim(a[i]))
contor = 1 ;
else
{
contor = 1 ;
int j ;
for ( j=2; j<a[i] ; j++)
if (cmmdc(j, a[i]) == 1)
contor++;
}
fi[i] = contor ;
}
}
iar apelul corect al funcției este: functie (int x , int f i , int m) ;
4. Se consideră funcția Calcul(n) unde n este un număr natural, n ∈ [1, 10000]:
int Calcul(int n)
{
int x = 0 ;
int z = 1 ;
while (z <= n)
{
x++;
z=z+2*x;
z++;
}
return x ;
}
Care afirmație de mai jos este falsă?
a) Funcția calculează și returnează numărul pătratelor perfecte strict pozitive și strict mai mici
decât n;
b) Funcția calculează și returnează partea întreagă a radicalului numărului n;
c) Dacă n = 1, functia returnează 1;
d) Daca n∈[125, 140], atunci Calcul(n) returnează 11.
5. Fie G un graf neorientat format din 3 componente conexe cu 3, 4 și respectiv, 5 noduri. Dacă cele
3 componente conexe reprezintă subgrafuri complete, care este diferența dintre
 numărul maxim de muchii care pot fi adăugate în graf astfel încât numărul de
componente conexe să fie 1 și
 numărul minim de muchii care pot fi adăugate în graf astfel încât numărul de componente
conexe să fie 1?

a) 19 b) 45 c) 47 d) 57
6. Precizați care dintre următoarele subprograme calculează corect cifra de control a unui număr
natural asociat x (Cifra de control a unui număr natural se determină calculând suma cifrelor
numărului, apoi suma cifrelor sumei și așa mai departe până când suma obținută reprezintă un
număr cu o singură cifră).

A. int Control(int x) B. int Control(int x)


{ {
int s; if(x==0)
if (x>9) return 0;
{ else if(x%9==0)
s=x%10+Control(x/10); return 9;
if(s<10) else
return s; return x%9;
else }
return Control(s);
}
else
return x;
} D. int Control(int x)
{
int s;
C. int Control(int x) while(x>9)
{ {
while(x>9) s=0;
x=x%10+x/10; while(x)
return x; {
} s=s+x%10;
x=x/10;
}
x=s;
}
return x;
}

a)A, B și C b)A,C c)B, D d)A, B, C, D

7. Precizați valoarea afișată în urma executării secvenței de program:


int v[8] ={21,4,10,3,11,50,1,3};
int ex(int n, int m)
{
if (n==m)
return v[n]%2;
else
return ex(n, (n + m) / 2) + ex((n + m)/2 + 1, m);
}
int main()
{
cout<< ex(0,7);
return 0;
}
a)3 b)4 c)5 d)6

8. Un arbore binar complet este un arbore cu rădăcină în care fiecare nod are exact doi fii sau
niciunul. Ştiind că rădăcina se găseşte pe nivelul 0, numărul maxim de noduri de pe nivelul 5
dintr-un astfel de arbore este?
a)120 b)16 c)25 d)50
9. Un elev foloseşte metoda backtracking pentru a genera submulţimile mulţimii {1, 2, 5, 6, 9}.
Numărul de submulţimi generate formate din exact 2 elemente, care obligatoriu conţin elementul
2 şi nu conţin elementul 6, este?
a) 6 b) 3 c) 7 d) 4
10. Variabilele i şi j memorează numere naturale nenule. Se consideră următoarea secvenţă de program:
for(i=0; i<=9; i++)
for(j=0; j<=9; j++)
a[i][j]=(2*i+3*j)%10;
Suma elementelor de pe diagonala principală a tabloului bidimensional construit este:
a) 10 b) 25 c) 50 d) 45
11. Ce valori ale variabilei a vor fi afișate pe ecran în urma executării secvenței de mai jos?
int a=17;
void f(int &b)
{
int c=a+b;
b++;
a--;
cout<<a;
}
int main()
{
a=10;
f(a);
cout<<a;
return 0;
}
a)1717 b)20 10 c)9 10 d)1010

12. Într-un graf neorientat cu 10 noduri, numerotate de la 1 la 10, există câte o muchie între
oricare două noduri numerotate cu numere consecutive şi câte o muchie între nodul
numerotat cu 10 şi fiecare dintre celelalte noduri. Câte subgrafuri cu exact 3 noduri, toate
adiacente două câte două, are graful dat?
a)6 b)7 c)8 d)9
13. Care este numărul de cicluri elementare (ce nu conțin același nod de mai multe ori) de lungime
impară ale grafului complet cu 11 noduri?
a) 1024 b) 2048 c)1013 d) 1000
14. Precizați câte grafuri neorientate distincte cu 20 noduri, dintre care cel puțin un nod este izolat,
se pot construi.
a) 2171 b) 20∙ 2171 c) 2190 d) 20∙2190
15. Pentru secvența de instrucțiuni de mai jos, ce valoare va fi afișată pe ecran?
int i, s;
for(i=1, s=0; i<3 && i%2!=0; s+=i, i++);
cout<<s;
a)0 b) 1 c) 4 d) 014
16. Valoarea afișată pe ecran în urma executării programului de mai jos este:
#include <iostream>
using namespace std;
int v[7]= {1, 4, 5, -7, 3, 6, 1};
int sub(int n)
{
int i, s, k=0;
s=v[0];
for(i=1; i<n; i++)
{
if(s == v[i])
k++;
s+=v[i];
}
return k;
}
int main()
{
cout<<sub(7);
return 0;
}
a)5 b)11 c)3 d)6
17. Presupunem că următoarele declaraţii au fost făcute pentru a reţine numele şi vârsta elevilor dintr-
o clasă, în ordine alfabetică. Specificaţi care dintre referirile de mai jos reprezintă iniţiala numelui
primului elev din catalog:
typedef struct
{
char nume[256];
int varsta;
} elev;
typedef elev clasa[35];
clasa a;
a)a[0].elev.nume b) a[0].elev.nume[0] c) a[0].nume[0] d) clasa[0].nume
18. Ce valori vor fi afişate în urma executării următorului program?
#include <iostream>
using namespace std;
int x;
void p1(int y)
{
int x;
x=y;
x=2;
cout<<x<<" ";
y=x ;
}
void p2(int &y)
{
x=y;
x=3;
cout<<x<<" ";
y=x;
}
int main()
{
x=1;
p1(x);
cout<<x<<" ";
p2(x);
cout<<x<<endl;
}
a) 2 2 3 3 b) 2 2 3 2 c) 2 1 3 2 d) 2 1 3 3
19. Considerăm următorul program:
#include <iostream>
using namespace std;
int x;
int sub(int &x, int y)
{
y++;
cout<<y<<" ";
if (y<=5)
{
x--;
cout<<x<<" ";
return sub(x, y+2)-1;
}
else
{
cout<<x<<" ";
return 5;
}
}
int main()
{
x=3;
cout<<sub(x, x);
cout<<" "<<x;
}
Ce valori se vor afișa după executarea acestuia?
a) 4 3 6 6 5 6 b) 4 2 7 2 4 2 c) 4 3 6 6 4 d) 4 2 7 2 4 3
20. Se consideră următorul subprogram.
void sub(int a[][21], int n, int k)
{ int i, aux;
aux=n-k;
for(i=n-k; i>1; i--)
a[k][i]=a[k][i-1];
a[k][1]=aux;
}
Știind că inițial tabloul bidimensional conține valorile
12345
13246
67341
89351
99872
n=5, k=1 și indexarea elementelor tabloului s-a realizat de la 1, precizați conținutul tabloului
bidimensional după apelarea funcției de mai sus.

a) b) c) d)
12445 41235 12335 82345
13246 13246 13246 13246
67341 67341 67341 67341
89351 89351 89351 19351
99872 99872 99872 99872

21. Ştiind că variabilele a şi b de tip întreg memorează două numere naturale impare, care dintre
următoarele expresii are valoarea 1?
a)!(a%2) ||!(b%2) b)!(a%2 || b%2) c)!(a%2) && !(b%2) d)!(!(a%2) || !(b%2))
22. De câte ori se execută instrucţiunea de afişare în următoarea secvenţă de instrucţiuni, ştiind că i şi
j sunt variabile de tip întreg?
int i, j;
for (i=3; i<=8; i++)
for (j=i+1; j<=9; j++)
cout<<i<<' '<<j<<endl;
a. 15 b. 21 c. 6 d. 9
23. Se consideră algoritmul pseudocod de mai jos.
citeşte x ,m
{x întreg, m natural}
y←1
┌ cât timp m>0 execută
│┌ dacă m%2 =0
││ atunci
││ m← [m/2]; x←x*x
││ altfel
││ m←m-1;y←y*x
│└■
└■
scrie y

Pentru care dintre perechile de mai jos algoritmul de mai sus va afișa valoarea 1?
a)x=5, m=1 b)x=0, m=120 c)x=1, m=67 d)x=3, m=3
24. Pentru definiţia următoare a subprogramului f, stabiliţi ce valoare returnează apelul f(7,3)?
int f(int x, int y)
{
int s=0, i;
if (x<y)
return 0;
if (x==y || y==1)
return 1;
for(i=y; i>=1; i--)
s = s + f(x-y,i);
return s;
}
a)4 b)5 c)3 d)6

25. Se consideră următoarea secvenţă de program în care variabila a memorează elementele unui
tablou bidimensional cu 5 linii şi 5 coloane, numerotate de la 1 la 5, iar celelalte variabile sunt de
tip întreg.
for(i=1; i<=2; i++)
for(j=i; j<=6-i; j++)
{
aux=a[i][j];
a[i][j]=a[6-i][j];
a[6-i][j]=aux;
}
Specificaţi care va fi conţinutul variabilei a în urma executării secvenţei de mai sus dacă iniţial
variabila a avea conţinutul de mai jos:
11111
22222
33333
44444
55555

a) b) c) d)
15551 55555 55555 55555
22422 24442 44444 22422
33333 33333 33333 33333
44244 42224 22222 44244
51115 11111 11111 11111
Răspunsuri, explicații
1.c - Fiind declarat static, vectorul va ocupa exact 10 · sizeof(char) octeți. Presupunând sizeof(char) = 1,
rezult 10 octeți.

2.a - Se analizează expresia începând cu cea mai îmbricată funcție. Funcția strchr returnează poziția
primei apariții a caracterului '2' din șirul s - un pointer la șirul "2022iulie". Apoi, funcția strcat
concatenează la șirul s șirul "2022iulie" returnând șirul "admitere2022iulie2022iulie". În final, funcția
strlen returnează numărul de caractere al șirului "admitere2022iulie2022iulie".

3.b – La punctul a, funcția este corectă dar apelul este efectuact greșit;

La punctul c, funcția este apelată corect dar atribuirile din funcție sunt greșite

void functie (int a [], int fi [], int m)


{
int i ;
int contor ;
for (i =0; i<m; i++)
{
if (a[i] == 1)
contor = a[i] - 1;
else if (prim(a[i]))
contor = 1 ;
else
{
contor = 1 ;
int j ;
for ( j=2; j<a[i] ; j++)
if (cmmdc(j, a[i]) == 1)
contor++;
}
fi[i] = contor ;
}
}
La punctul d, atât funcția cât și apelul funcției sunt greșite.

4.a Pentru radical din "a" se știe că a este cuprins între două pătrate perfecte așa că putem scrie n <=
radical(a) <= n + 1 și ridicând la pătrat, n2 <=a < (n + 1)2
Variantele b, c și d sunt adevărate. Partea întreagă a lui radical din 1 este 1. Partea întreagă a oricărui
radical din intervalul 125,140 este 11, deoarece pătratul lui 11 este 121 și al lui 12 este 144.

5.b Numărul maxim de muchii pentru o componentă conexă cu n noduri este n(n−1)/2 (graf complet).
Numărul maxim de muchii care pot fi adăugate în graf astfel încât numărul de componente conexe să fie 1
= număr de muchii graf complet - număr muchii existente = 12(12−1)/2 − 3(3−1)/2 − 4(4−1)/2 − 5(5−1)/2
= 47. Numărul minim de muchii care pot fi adăugate în graf astfel încât numărul de componente conexe
să fie 1: 2 (două muchii care conectează cele 3 componente conexe într-una singură ). Răspuns: 47 − 2 =
45.
6.d – Toate subprogramele calculează cifra de control a uni număr.
7.c - Subprogramul se apelează pe prima jumătate (de la n la (n+m)/2) şi pe a doua ((n+m)/2 +1 până la
m) adunând restul fiecărui element la impartirea cu 2.
8. c – Pe nivelul 0 se găsește 1 nod(rădăcina), pe nivelul 1 se găsesc 2 noduri(2 1), pe nivelul 2 se găsesc 4
noduri (22), etc.
9. b – Mulțimea devine{1, 2, 5, 9}
Submulțimile formate din exact 2 elemente sunt {1, 2}, {2, 5}, {2, 9}
10.b - Se construiește tabloul bidimensional pe baza atribuirii din secvența de instrucțiuni și apoi se
calculează suma elementelor de pe diagonala principală.
11.d –
12.c –
13.c -
14.b -
15.b
16.c
17.c
18.d
19.b
20.b
21.d
22.b
23.c
24.a
25.b - Secvenţa interschimbă elementele triunghiurilor nord şi sud inclusiv elementele de pe diagonale din
tabloul bidimensional, celelalte elemente rămânând neschimbate.

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