Sunteți pe pagina 1din 6

1

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

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