Sunteți pe pagina 1din 3

FACULTATEA DE FIZICĂ ADMITERE 2012

Model de test de Informatică (C/C++)

1. Se consideră definite trei variabile de tip int: x, y si z. O expresie C/C++ care are
valoarea 1 dacă și numai dacă x, y si z au valori identice este:

a. x==y && x==z b. x==y==z c. x==y || x==z || y==z


d. !( x!=y && x!=z)

2. Se consideră secvența de instrucțiuni alăturată, în care variabilele i și j sunt de tip


întreg, variabila a este de tip char, iar variabila s poate memora un șir de cel mult 20 de
caractere. Șirul afișat în urma executării secvenței este:

strcpy(s,"bacalaureat");
j=strlen(s);
for(i=0;i<3;i++)
if(s[i]!=s[j-i-1])
{ a=s[i];
s[i]=s[j-i-1];
s[j-i-1]=a;
}
cout<<s; | printf("%s",s);

a. bacalaureab b. tacalaureab c. tacrlauaeab d. taealaurcab

3. Utilizând metoda backtracking se generează toate numerele pare cu câte trei cifre,
cifre care aparțin mulțimii {7, 8, 1, 6, 2, 3}. Primele 4 soluții generate sunt, în această
ordine: 778, 776, 772, 788. Cea de a 8-a soluție generată este:

a. 712 b. 716 c. 718 d. 782

4. Variabilele i si j sunt de tip int (1≤i≤5, 1≤j≤5), iar variabila A memorează elementele
unui tablou bidimensional, cu 5 linii si 5 coloane, numerotate de la 1 la 5. Expresia care
are valoarea 1 dacă și numai dacă elementul A[i][j] se află pe diagonala secundară a
tabloului este:

a. i+j==4 b. i+j==6 c. i<j d. i==j

5. Se consideră subprogramele recursive R1 si R2, definite mai jos.

long R1(int x, int p)


{ if(p==0) return 1;
return x*R1(x,p-1);
}
long R2(int x, int p)
{ long f;
if(p==0) return 1;
if(p%2==0)
{ f=R2(x,p/2);
return f*f;
}
return x*R2(x,p-1);
}

La apel, pentru parametrii x=3 si p=5, returnează valoarea expresiei 35:

a. atât R1, cât si R2 b. numai R1 c. numai R2 d. nici R1, nici R2

6. O expresie C/C++, care are ca valoare cel mai mic dintre numerele distincte
memorate în variabilele întregi x, respectiv y, este:

a. (x+y-abs(x-y))/2 b. (x+y+abs(x-y))/2 c. (abs(x+y)-x-y)/2 d.


(abs(x-y)+abs(y-x))/2

7. O instrucţiune C/C++, a cărei executare determină memorarea în variabila reală x a


mediei aritmetice a valorilor variabilelor reale x, y si z este:

a. x = (x + y + z)/2; b. x = x + y + z/3; c. x = x/1/3+ y/1/3 + z/1/3;


d. x = x/3+ (y + z)/2;

8. Se consideră tabloul unidimensional v, cu elementele v1=1, v2=7, v3=5, v4=3. În


algoritmul de sortare scris alăturat, s-a notat cu a↔b interschimbarea valorilor
variabilelor a si b. Pentru a sorta crescător cele patru elemente ale tabloului v, numărul
de interschimbări realizate prin executarea secvenței alăturate este:

┌repetă
│ ok<-1
│┌pentru i<-1,3 execută
││┌dacă vi>vi+1 atunci
│││ ok<-0
│││ vi<->vi+1
││└■
│└■
└până când ok=1

a. 1 b. 2 c. 3 d. 4

9. Se consideră variabilele x, y, z si w care memorează câte un număr real, astfel încât


expresia C/C++ x<y && z<w && w<x are valoarea 1 Variabila care are ca valoare cel
mai mare dintre numerele menţionate mai sus este:

a. x b. y c. z d. w

10. Se consideră subprogramul p, definit alăturat. Valoarea lui p(210, 49) este:
int p(int m, int n)
{ if(n==0) return 1;
return 1+p(n, m%n);
}

a. 1 b. 2 c. 3 d. 4

11. Se consideră subprogramul recursiv CM, definit alăturat. Pentru a returna valoarea
celui mai mare divizor comun al numerelor naturale 100 si 330, apelul subprogramului
poate fi:

int CM (int x, int y, int z)


{ if(x%z==0 && y%z==0) return z;
else return CM(x,y,z-1);
}

a. CM(1,100,330) b. CM(100,330,1) c. CM(100,330,100) d.


CM(330,330,100)

12. Care este numărul total de atribuiri efectuate la executarea secvenței de instrucțiuni
alăturate:

x=4; y=6;
while y==6 do y=y+1;
if x==y then x=x+1;

a. 4 b. 3 c. 2 d. 5