Sunteți pe pagina 1din 7

1. Precizaţi care dintre următoarele linii de program 6. Care dintre afirmaţiile de mai jos sunt adevărate?

reprezintă corect,dpdv sintactic, lista de parametri şi a) parametrii definiţi în antetul unei funcţii se numesc
valoarea returnată de o funcţie cu numele test, dacă cerem actuali, iar cei care apar la apelul funcţiei se
ca parametrii formali să fie două variabile de tip întreg, x şi numesc formali
y, şi o variabilă de tip real z, şi să returneze un rezultat b) valoarea returnată de către o funcţie poate fi
întreg. transmisă ca parametru altei funcţii
a) int test(int x,y,float z) c) variabilele de tip tablou nu se pot transmite ca
b) int test(int x,y;float z) parametri funcţiilor
c) int test(int x,int y,float z) d) variabilele globale sunt cunoscute pe tot parcursul
d) test(int x;int y;float z) int programului în care au fost declarate în toate
e) test(int x,int y,float z) int modulele care urmează declaraţiei
e) corpul unei funcţii trebuie cuprins între “{“ şi “}”,
numai dacă este alcătuit din cel puţin două
2. Care dintre afirmaţiile de mai jos sunt adevărate? instrucţiuni distincte
a) la apelul unei funcţii, se produce înlocuirea
parametrilor formali cu parametrii actuali
b) tipul parametrilor daţi la apelul unei funcţii trebuie 7. Avantajele utilizării funcţiilor într-un program sunt:
să coincidă sau să fie compatibil cu tipul celor a) se poate obţine o economisire a spaţiului de
definiţi în antetul funcţiei memorie rezervat variabilelor folosite în cadrul
c) orice funcţie trebuie să aibă întotdeauna cel puţin programului
un parametru b) o viteză mai mare în execuţia programului
d) nici una dintre afirmaţiile de mai sus c) posibilitatea de a executa de mai multe ori
instrucţiunile cuprinse într-o funcţie
d) un program care conţine funcţii poate fi urmărit şi
3. Se consideră un vector v care poate memora maxim 25 corectat mai uşor
de numere întregi, din care folosim efectiv numai primele n e) nici unul dintre avantajele de mai sus
elemente. Scrieţi antetul unei funcţii numită calcul, care
primeşte drept parametri vectorul v împreună cu numărul
său de elemente şi nu returnează nimic. 8. Deduceţi şirul de valori care se afişează în urma
a) void calcul(int v[n],25) execuţiei programului de mai jos:
b) void calcul(int v[25],int n) #include<iostream.h>
c) void calcul(int v[],int n) int i,j,k;
d) void calcul(int v[],n) int test(int x,int y)
e) void calcul(int v,int n) {
return x-y;
}
4. Considerăm o funcţie demo, de tip void pentru care se void calcul(int p,int q)
definesc ca parametri trei variabile întregi. Cum realizăm {
apelul funcţiei, astfel încât la apel să dăm ca parametri int u,v;
variabilele întregi a,b şi c? u=p-i; v=q+j;
a) demo(int a,int b,int c); i=test(u,q);
b) demo(int a;int b;int c); j=test(v,p);
c) demo(a,b,c); }
d) demo(a;b;c); void main()
e) demo(int a,b,c); {
i=2; j=3;
calcul(i,,j);
5. Scrieţi o funcţie D care primeşte ca parametru un număr cout<<i<<” “<<j;
întreg a şi returnează valoarea lui a+2. calcul(j,i);
a) int D(int a);{D=(a+2);} cout<<i<<” “<<j;
b) int D(int a){D=a+2;} }
c) int D(int a);{return(a+2);} a) 2 3 2 3 b) 3 2 3 2
d) int D(int a){return a+2;} c) 2 3 –3 4 d) –3 4 4 –3
e) nici una dintre variantele anteriare d) –3 4 10 –3

1
9. Considerăm programul următor:
#include<iostream.h>
int m;
void p(int& c)
{
int b;
b=3*m; c=b+2; m+=3;
cout<<m; // (5)
cout<<b<<” “<<c; //(6)
}
void main()
{
m=3; p(m); // (1)
p(3); // (2)
cout<<m; // (3)
cout<<b<<” ”<<c; // (4)
}
Care dintre următoarele afirmaţii sunt adevărate?
a) în cursul execuţiei primului apel al funcţiei p, cel
din linia (1), se vor afişa, în ordine, valorile 14,9,14
(liniile (5) şi (6))
b) cele două apeluri ale funcţiei p, din liniile (1) şi (2),
sunt corecte şi echivalente (produc acelaşi rezultat
în orice situaţie)
c) linia (3) afişează valoarea 14
d) linia (4) afişează valorile 9 şi 14
e) la fiecare execuţie a funcţiei p, se salvează pe
stivă valoarea lui c

2
10. Ce valori va afişa programul următor? F(x,y,z);
#include<iostream.h> Cout<<x<<” “<<y<<” “<<z;
int n,m; }
void t(int n,int& m) Funcţia F primeşte ca parametri trei numere întregi a,b,c.
{ Cum trebuie scris antetul complet al funcţiei, astfel încât
n+=2; m--; programul să afişeze, în ordine, valorile 4 4 7?
} a) void F(int a,int b,int c)
void main() b) void F(int a,int& b,int& c)
{ c) void F(int& a,int b,int& c)
n=2; m=5; d) void F(int& a,int b,int c)
t(n,m); e) void F(int& a,int& b,int& c)
cout<<n<<” “<<m; 14. Ce valoare trebuie citită în variabila m astfel încât
n=10; m=20; programul următor să afişeze valoarea 4?
t(n,m); #include<iostream.h>
cout<<n<<” “<<m; void F(int& nr,int x)
} {
a) 4 4 12 19 b) 4 5 12 20 do{
c) 2 4 10 19 d) 2 5 10 20 x=x/2;
e) 7 2 22 10 nr++;
11. Precizaţi ce se va afişa în urma execuţiei programului }while(x>0);
de mai jos: }
#include<iostream.h> void main()
int v[2],i; {
void test(int x[],int k) int m,n;
{ cin>>m; n=0;
x[k]=0; F(n,m); cout<<n;
} }
void main() a) 12 b) 13 c) 14 d) 15 e) 16
{ 15. Precizaţi care dintre funcţiile de mai jos returnează 1
v[0]=1; v[1]=2; dacă numărul x este prim, 0 în caz contrar.
for(i=0;i<2;i++) a) int p(int x)
{ {
test(v,i); int j,ok;
cout<<v[0]<<” “<<v[1]); for(j=2;j<x;j++)
} if(x%j==0) ok=0;
} else ok=1;
a) 0 2 0 0 b) 0 2 1 2 return ok;
c) 1 2 1 0 d) 1 2 1 2 }
e) 1 2 2 2 b) int p(int x)
12. Determinaţi valorile pe care le afişează programul de {
mai jos: int j;
#include<iostream.h> for(j=2;j<x;j++)
int x,y; if(x%j==0) return 0;
int T(int m,int n) else return 1;
{ }
m=n+x; n+=1; c) int p(int x)
return(n+y+m); {
} int j,ok=1;
void main() for(j=2;j<x;j++)
{ if(x%j==0) ok=0;
y=10; x=12; return ok;
cout<<T(x,y)); }
cout<< x<< » « <<y; d) int p(int x)
} {
a) 43,22,10 b) 43,12,10 int j;
c) 47,10,12 d) 44,22,11 return 1;
e) 44,12,11 for(j=2;j<x;j++)
13. Fie programul: if(x%j==0) return 0;
#include<iostream.h> }
void F(……..)
{ 16. Deduceţi ce numere va afişa programul următor:
a+=2; b--; #include<iostream.h>
c=a+b; int& f(int a,int b,int& c)
} {
void main() c=a+b;
{ return c;
int x,y,z; }
x=2; y=4; void main()
3
{ Ce realizează funcţia ?
int x=2,y=3,z=11; a) converteşte litera mică a în litera mare A
cout<<f(x,y,z)<<” “<<z; b) converteşte litera mare A în litera mică a
c) converteşte literele mici în litere mari
} d) converteşte literele mari în litere mici
a) 5,11 b) 5,11 c) 5,11 21. Presupunând că n este numărul de elemente ale unui
d) 5,11 e) 5,5 vector de numere reale , să se specifice când funcţia de
17. Precizaţi valoarea variabilei n rezultată în urma mai jos întoarce valoarea 0 .
execuţiei programului: int f(int n)
#include<iostream.h> {
int f(char a[2]) int i;
{ for(i=1;i<n-1;i++)
int j=0; if(x[i]==x[i+1]) return 0;
while(a[j++]); return j; return 1;
} }
void main() a) dacă două elemente din vector sunt distincte
{ b) dacă oricare două elemente din vector sunt egale
int n=f(“abcdefgh”); c) dacă primele două elemente din vector sunt egale
} a) dacă două elemente consecutive sunt egale , fără
a) 0 b) 2 c) 8 22. Se consideră funcţia demai jos :
d) corpul funcţiei conţine o buclă infinită int f(int n)
e) programul are erori de sintaxă {
18. Fie programul : int x=0; int c=0;
#include <iostream.h> while(n)
void fct(int a,int &b) { c=n%10;
{ x=x*10+c;
a+=3; b+=a; n=n/10;
} }
void main() return x;
{ }
int c, d; Pentru n=121 , f capătă valoarea :
c=4; d=5; a) 121 b) 4 c) 3 d) 121000
fct(c,d); 23. Se consideră funcţia următoare :
cout<<c<<” “<<d; int f(int n)
fct(c,d); { int x=0; int c=0;
cout<<c<<” “<<d; int a=n;
} while (n)
Ce se afişează pe ecranul monitorului în urma execuţiei { c=n%10;
programului ? x=x*10+c;
a) 4545 b) 412412 n=n/10;
c) 712719 d) 412419 }
19. Se dă funcţia : if(x==a) return 1;
int fct(int n) else return 0;
{ }
int d=2; Valoarea f=1 arată că :
int g=(int) sqrt(n); a) n este număr prim
int f=1; b) n este număr par
while (d<=g&&f) c) n este palindrom
{ d) x este divizor al lui n
f=f&&n%d; 24. Se consideră funcţia următoare :
d=d+1 int f()
} { int i;
return f; Cout<<i;
} }
Să se precizeze ce prelucrare se realizează în această Valoarea afişată de funcţie este :
funcţie : a) 0 b) 1 c) 32737
a) se determină factorii primi ai lui n d) nu se poate preciza valoarea afişată
b) se determină numere prime până la √n 25. Se consideră subprogramul :
c) se verifică dacă numărul n este prim int f(int a,int b)
d) se verifică dacă n se împarte exact la d { int r=a%b;
20. Fie funcţia : while (r>0)
int f(int a) {a=b;b=r;r=a%b;}
{ return b;
if(a>=’A’&&a<=’Z’) }
return c+’a’-‘A’ Pentru a=45 si b=27 , valoarea lui f este:
else a) 3 b) 9 c) 72 d) 135
return c;
}
4
26. Să se precizeze care sunt valorile care vor fi tipărite de a=10 b=20 c=30
programul de mai jos : c) a=11 b=21 c=31
int i,j; a=10 b=20 c=30
void p(int j) d) nici una din variantele 1-3
{ j++; 31. Următoarele linii de cod :
i=j+1; #include<iostream.h>
} void incr(int &x,int &y,int &z)
void main() { x=x+1;
{ i=2; j=4; y=y+1;
p(i); z=z+1;
cout<<i<<” “<j; }
} void main()
a) 1 6 b) 1 4 c) 4 6 d) 4 4 { int a=10, b=20, c=30;
27. Se consideră următoarea funcţie : cout<<a<<” ”<<b<<” ”<<c;
float x[10]; incr(a,b,c)
int f(int n) cout<<a<<” ”<<b<<” ”<<c;
{ int i,k=0; }
for(i=1;i<n;i++) vor afişa următoarele rezultate:
if(x[i]==x[i-1]) k++; a) a=10 b=20 c=30
return k; a=11 b=21 c=31
} b) a=10 b=20 c=30
Dacă x=(5, 6, 6, 6, 3, 4, 4, 9) valoarea returnată pentru f a=10 b=20 c=30
este : c) a=11 b=21 c=31
a) 3 b) 2 c) 7 d) 5 a=10 b=20 c=30
28. Ce face următorul program ? d) nici una din variantele 1-3
int function p3(int x)
{ return x*x*x; 32. Parametrii folosiţi la definiţia unui subprogram se
} numesc:
void main() a) globali b) formali c) locali d) actuali
{ int x,y; 33. Care dintre următoarele afirmaţii este adevărată?
cin>>x>>y); a) O funcţie se defineşte şi apelează doar atunci
cout<<p3(x+y); când există o secvenţă de instrucţiuni care se
} repetă de mai multe ori
a) este eronată
b) O funcţie întoarce obligatoriu o valoare
b) calculează x3
c) calculează (x+y)3 c) La apelul unei funcţii compilatorul efectuează
d) calculează y3 înlocuirea parametrilor formali cu cei actuali
29. Funcţia C : d) O funcţie trebuie să conţină obligatoriu parametri
int functie(double x,int n,int a[]) 34. Ce verifică următoarea funcţie?
{ int k,i; int f(int n)
k=0; {
for(i=0;i<n;i++) int d=2,k=l;
if(a[i]<x) k++; while(d<=n/2&&k)
return k; {
} k=k &&(n%d); d+=l;
returnează : }
a) cele k elemente mai mici ca x dintr-un vector a return(k && n>=2);
b) cele k-1 elemente mai mici ca x dintr-un vector a }
c) cele k elemente mai mici egale ca x dintr-un a) dacă n este par
vector a b) dacă n este pătrat perfect
d) cele k elemente mai mari ca x dintr-un vector a c) dacă n are doar divizori primi
30. Următoarele linii de cod : d) dacă n este prim
#include<iostream.h>
void incr(int x,int y,int z) 35. Ce valori se vor afişa în urma execuţiei programului?
{ x=x+1; int n,a=l;
y=y+1; int f(int n)
z=z+1; { return (n++)+a+2;}
} void main()
void main() {
{ int a=10, b=20, c=30; int a=10;
cout<<a<<” ”<<b<<” ”<<c; int m=f(a); cout<<n<<" "<<m;
incr(a,b,c) }
cout<<a<<” ”<<b<<” ”<<c; a) O 14 b)1 13 c) O 13
} d) 1 14
vor afişa următoarele rezultate: 36. Se consideră programul:
a) a=10 b=20 c=30 f(int a,int &b,int c)
a=11 b=21 c=31 {
b) a=10 b=20 c=30
5
a=++b; c=a+=2; f(x.n,y.n); cout<<x.n<<y.n;
return a+b+c/3; f(x.n,x.n); cout<<x.n;
} }
void main() a) 228 b) 222 c) 224
{
d) 122.
int a,b,c;
41. Ce va afişa programul?
a=b=c=l;
struct ex {char c;int n;};
cout<<f (a,b,c)<<a<<b<<c;
} void f (struct ex *a, struct ex *b)
Ce se va afişa în urma rulării sale? { a=b; }
a)3121 b) 7424 c)7121 d)3424 void main ( )
{
37. Ce valoare va returna funcţia f() apelată în struct ex
programul principal? el={'#',5},e2={'*',6},*p=&el,*q=
int f (const char *s) &e2;
{ cout<<p->c<<p->n;
int n=0; f(q,P); cout<<q->c<<q->n;
for(;*s++! = '\0' ;n++) ; }
return n; a)#5#6 b)#5#5 c) *6*6
} d) #5*6
void main ( )
{ 42. Câte apeluri ale funcţiei f() se realizează şi care este
cout<<f("informatica") ; } ultima linie afişată?
a) 12 b) 11 c) 10 d) struct complex { float x,y;};
13 void f(struct complex *zl,struct
complex z2)
38. Ce valoare va avea variabila a în urma apelului f(a) {
ştiind că valoarea sa înaintea apelului este 11 şi funcţia zl->x+=z2.x+l; zl->y+=z2.y-l;
f() este definită astfel: }
void f(int &m) void main ( )
{ {
int b=m/10,c=l; int i;
while (b<m/2) struct complex z;
{ c*=b%2+m%2; b++ ;} z.x=2.O; z.y=2.O ;
m=b*c; for(i=0;i<4;i++)
} {
a) 11 b) 16 c) 20 d) O cout<<z.x<<"+i*"<<z.y<<"\n";
f(&z,z) ;
39. Ce se va afişa în urma execuţiei programului următor?
}
int a[3][3]={1,2,3,4,5,6};
}
void f(int a[3][3],int &b,int &c)
a) 4 apeluri şi 23+i*9
{
b)4 apeluri şi 47+i*17
for(int i=0;i<3;i++)
c) 5 apeluri şi 23+i*9
for(int j=0; j<3; j++)
d)5 apeluri şi 47+i*17
if(j>i&&!i%2) c*=a[i][j] ;
else if(i<j) b+=a[i][j] ; 43. Ce va afişa programul?
} int i,j;
void main ( ) int fl(int x,int y)
{ {
intb=l,c=0; x-=y; return x;
f(a,c,b); cout<<b<<" "<<c; }
void f2(int a,int &b)
} {
a) 65 b) 56 c) 66 d) 1O int u=a+i, v=b-j+i;b++;
40. Ce afişează programul următor? i=f1(u, a); j=f1(v, b) ;
typedef struct {int n;} n; }
void f(int x,int &y) void main ( )
{ {
x*=2;y*=2; i=j=1;
} f2(i,j);
void main ( ) cout<<i<<" "<<j<<" ";
{ f2(j,i); cout<<i<<" "<<j;
n x,y; }
x.n=l; y.n=l;
6
a) 1 2 2 2 b) 1 -1 1 -1 c) 1 0 {
0 -1 d) 1 -1 1 2 int c=a+b;
b++;a-- ; cout<<a<<" ";
44. Rezolvarea conflictelor dintre numele }
variabilelor globale şi numele celor locale se void main()
face după criteriul: {
a=10;f(a); cout<<a;
a) variabila globală are prioritate în faţa celei
}
locale pe parcursul întregului program a) 10 10 b) 17 17 c) 10 17
b) variabila locală are prioritate numai în linia d) 17 10
de program în care a fost declarată
c) variabila locală are prioritate în faţa celei globale în 48. Ce conţinut va avea şirul t1 în urma execuţiei
corpul de program în care este declarată secvenţei:
d) nu se poate ca 2 variabile să aibă acelaşi char t1[]="12345", t2[]="103056";
nume, chiar dacă una este globală şi cealaltă f(tl,t2);
locală ştiind că funcţia f() este definită astfel?
void f(char s120],char s2[20])
45. Care sunt valorile afişate de programul următor? { int ll=strlen(sl),l2=strlen(s2) ;
int a=l,b=2,c=3; int i=0;
void f() while (i<ll && i<l2)
{ {
int a=100; int b=a+c; if(*(sl+i)==*(s2+i)&&
c+=a+b; sl[i]>='0'&& sl[i]<='9')
cout <<a<<” “<<b<<” “<<c<<”\n”; s1[i]=’a’+s1[i]-‘0’;
} i++;
void main ( ) }
{ }
f(); a)„B2D4F" b) „b2d4f c) „a2c4e"
cout <<a<<” “<<b<<” “<<c<<”\n”; d)„1c3e5"
}
a)100 103 206 1 2 206
49. Ce verifică funcţia test?
b) 100 103 206 100 103 206
int test (char s[])
c) 1 4 7 1 2 7 d) 1 4 7 1 2 3
{
strlwr (s) ;
46. Cum se va modifica valoarea variabilei nume
int i=0, j=strlen (s)-l, t=l;
în urma apelului funcţiei modif (nume, 'm'),
while (i<j && t)
ştiind că înainte de apel variabilei i s-a atribuit {
cuvântul „informatica"? if(s[i]>='a' && s[i]<='z'
void modif(char *s,char c) && s[i]!=s[j]) t=0;
{ i++; j--;
while(*s && *s!=c) }
{ return t;
*s-=32; s++; }
} a) verifică dacă şirul s de caractere conţine şi
}
caractere nealfabetice
a) „INFORMATICA" b) „informatica"
b) verifică dacă şirul s de caractere este
c) „INFORmatica" d) „matica"
palindromic
c) verifică dacă şirul s de caractere este
47. Ce valori ale variabilei a vor fi afişate în urma
execuţiei programului următor? palindromic fără a testa şi caracterele nealfabetice
int a=17; d) verifică dacă şirul s are caracterele nealfabetice
void f(int &b) aşezate simetric faţă de capetele sale, identic

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