3. Se consideră funcţia:
4. Corectaţi greşelile care apar în următoarele secvenţe de instrucţiuni de program, ce constituie antetul sau
declaraţiile unor funcţii:
a) int alfa (int n; int m)
b) beta (int m)
c) void gama( int a, b)
d) void f (int n , int &x[20])
e) void delta( )
{……….. return k;}
Alegeți:
31. Care dintre următoarele anteturi de subprogram este un antet corect pentru o funcţie reală cu parametru
întreg?
a. double f(long x); b. double f(float x) c. void f(int x) d. float f(int x);
32. Care dintre următoarele anteturi de subprogram sunt corecte?
a. int f(int x); b. f(int x, int y, char z) c. int f(int x,y) d. float f(int x; int y)
33. Funcţia m() are doi parametri reali şi furnizează cea mai mică valoare dintre cei doi parametri. Care
dintre următoarele instrucţiuni afişează cea mai mică valoare dintre a, b şi c?
a. cout<<m(a,b,c); b. cout<<m(m(a,b),m(b,c)); c. cout<<m(a,m(b,c)); d. cout<<m(m(a,b),c);
34. Se consideră că următoarea funcţie furnizează cel mai mare divizor comun a două numere transmise ca
parametru.
int cmmdc(int a, int b) {while (...) if (a>b) a-=b; else b-=a; return a;} Ce condiţie trebuie scrisă în
instrucţiunea while? a. a>b b. a!=b c. a==b d. a<b
35. Se consideră că următoarea funcţie testează dacă numărul transmis ca parametru este un număr prim.
int prim(int n)
{int i=3;
if (n%2) while (...)
if (n%i==0) return 0;
else i+=2;
else return 0;
return 1;}
Ce condiţie trebuie scrisă în instrucţiunea while? a. i<sqrt(n) b. i<n/2 c. i<=sqrt(n) d. i<= n/2
36. Pentru fiecare antet al subprogramului sb din coloana A, există în coloana B valorile care vor fi afişate
pe ecran. Alegeţi atribuirile corecte:
int a,b; void sb(...){int a; a=m; n+=a; m=n;} int main(){a=10; b=20; sb(a,b); cout<<a<<" "<<b<<" ";}
A B
A1. void sb(int m, int n) B1. 30,30
A2. void sb(int &m, int n) B2. 10,30
A3. void sb(int m, int &n) B3. 10,20
A4. void sb(int &m, int &n) B4. 30,20
43. Subprogramul cifre calculează numărul i de cifre ale unui număr natural n transmis ca parametru şi
construieşte vectorul v format din cifrele lui n. Care este antetul corect al unui astfel de subprogram?
a. void cifre(long n, vector &v, int &i) b. void cifre(long n, int i, vector v)
c. void cifre(long n; vector v; int &i) d. void cifre(long &n; vector v; int i)
44. Dacă a este o variabilă globală şi la începutul subprogramului sub este definită o variabilă locală a,
atunci în instrucţiunea a=a+1 din subprogramul sub, a se referă la:
a. variabila globală a b. nu se poate defini a ca variabilă globală şi variabilă locală
c. variabila locală a d. unul la variabila locală, iar altul la variabila globală
45. Se presupune că este definită o funcţie min care primeşte două valori reale prin intermediul a doi
parametri şi returnează cea mai mică dintre cele două valori. Stabiliţi care dintre următoarele expresii
este egală cu cea mai mare dintre valorile reale a şi b.
a. min(a,b) – a – b b. a - min(a,b) + b - min(a,b) c. a + b - min(a,b) d. min(a,b)
46. Este definită o funcţie min care primeşte două valori reale prin intermediul a doi parametri şi returnează
cea mai mică dintre cele două valori. Stabiliţi care dintre următoarele expresii nu este egală cu cea mai
mică dintre valorile reale a, b şi c.
a. a + b + c - min(a,b) – min(a,c) b. min(min(a,b)),min(a,c)) c. min(min(a,b),c) d. min(a,min(b,c))
47. Este definită funcţia max care primeşte două valori întregi prin intermediul parametrilor formali a şi b
(primul fiind a şi al doilea b) şi returnează cea mai mare cifră din şirul infinit al zecimalelor raportului
a/b. Astfel, max(5,12)=6 deoarece 5/12= 0.41666…, iar max(1,8)=5 deoarece 1/8=0.125000… Stabiliţi
care dintre următoarele expresii este adevărată dacă şi numai dacă m este divizor al lui n.
a. max(n,m)<=0 b. max(m,n)==0 c. max(m,n)==0>0 d. max(n,m)!=0
48.
a) 214
b) 124
c) 113
d) 114
49.
50. Se ştie că există o variabilă globală v de tip vector şi că vectorul v este format numai din 0 şi 1. Ştiind că
subprogramul alăturat returnează numărul de componente nenule aflate pe primele n poziţii ale
vectorului v, stabiliţi ce este incorect în definiţia acestuia.
int f(int a) {int k=0; for (int i=0; i<n;i++) k+=v[i];}
52. Subprogramul scif returnează suma cifrelor unui număr natural transmis ca parametru. Stabiliţi valoarea
expresiei scif(scif(518) + scif(518)). a. 14 b. 10 c. 28 d. 1
53. Subprogramul alăturat z1
……………/*antet*/{a=a*10; return (int)a%10;} are un singur parametru real a. Ştiind că secvenţa
float x=4.25; cout<<x<<" "<<z1(x); afișează 4.25 2, stabiliți care este antetul corect al subprogramului
z1.
a. void z1(float &a) b. void z1(float a) c. int z1(float &a) d. int z1(float a)
54. Pentru valori strict pozitive ale parametrului a, funcţia f definită astfel:
int f(int a) {while (a%10>5) a/=10; return a>0;}
returnează valoarea 1 dacă şi numai dacă valoarea lui a este un număr natural care:
a. are ultima cifră mai mică sau egală cu 5 b. are cel puţin o cifră mai mică sau egală cu 5
c. are prima cifră mai mică sau egală cu 5 d. are cel mult o cifră mai mică sau egală cu 5
55. Pentru subprogramul int z1(float &a) {if (a<0) a=-a; a*=10; return (int)a%10;}, variabila întreagă x şi
variabila reală r=4.25, stabiliţi câte dintre secvenţele alăturate afişează valoarea 4.
x=z1(r); cout<<x+z1(r);
x=z1(r); cout<< z1(r) +x;
cout<< z1(r)+z1(r);
x=z1(r); cout<<x+x;
a. 4 b. 3 c. 2 d. 1
56. Pentru variabilele n, i şi j întregi, secvenţa alăturată {cin>>n; divi(n,i,j); cout<<i<<j;}afişează cel mai
mare şi cel mai mic divizor propriu al numărului natural neprim citit (1 şi n sunt divizori improprii).
Care este antetul corect pentru subprogramul divi?
a. int divi(int &n, int i, int j) b. int divi(int n, int &i, int &j)
c. void divi(int n, int i, int j) d. void divi(int n, int &i, int &j)
57. Este definită o funcţie smax care primeşte două valori întregi prin intermediul a doi parametri şi
returnează suma tuturor cifrelor celor două numere. De exemplu, smax(73,608) returnează 24. Stabiliţi
în ce mod se poate apela funcţia smax pentru a determina și afișa suma cifrelor unui număr întreg n.
a. cout<<smax(n,n); b. smax(n,0); c. cout<<smax(n,0); d. smax(n,n);