Sunteți pe pagina 1din 7

Clasa a XI-a Subprograme 1

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

10. Ce valori va afişa programul următor? c=a+b;


#include<iostream> }
using namespace std; void main()
int n,m; {
int t(int n,int % m) int x,y,z;
{ x=2; y=4;
n+=2; m--; F(x,y,z);
} Cout<<x<<” “<<y<<” “<<z;
int main() }
{ Funcţia F primeşte ca parametri trei numere întregi a,b,c.
n=2; m=5; Cum trebuie scris antetul complet al funcţiei, astfel încât
t(n,m); programul să afişeze, în ordine, valorile 4 4 7?
cout<<n<<” “<<m; a) void F(int a,int b,int c)
n=10; m=20; b) void F(int a,int& b,int& c)
t(n,m); c) void F(int& a,int b,int& c)
cout<<n<<” “<<m; d) void F(int& a,int b,int c)
} e) void F(int& a,int& b,int& c)
a) 4 4 12 19 b) 4 5 12 20 14. Ce valoare trebuie citită în variabila m astfel încât
c) 2 4 10 19 d) 2 5 10 20 programul următor să afişeze valoarea 4?
e) 7 2 22 10 #include<iostream>
11. Precizaţi ce se va afişa în urma execuţiei programului void F(int& nr,int x)
de mai jos: {
#include<iostream> do{
using namespace std; x=x/2;
int v[2],i; nr++;
int test(int x[],int k) }while(x>0);
{ }
x[k]=0; void main()
} {
int main() int m,n;
{ cin>>m; n=0;
v[0]=1; v[1]=2; F(n,m); cout<<n;
for(i=0;i<2;i++) }
{ a) 12 b) 13 c) 14 d) 15 e) 16
test(v,i); 15. Precizaţi care dintre funcţiile de mai jos returnează 1
cout<<v[0]<<” “<<v[1]); dacă numărul x este prim, 0 în caz contrar.
} a) int p(int x)
} {
a) 0 2 0 0 b) 0 2 1 2 int j,ok;
c) 1 2 1 0 d) 1 2 1 2 for(j=2;j<x;j++)
e) 1 2 2 2 if(x%j==0) ok=0;
12. Determinaţi valorile pe care le afişează programul de else ok=1;
mai jos: return ok;
#include<iostream> }
using namespace std; b) int p(int x)
int x,y; {
int T(int m,int n) int j;
{ for(j=2;j<x;j++)
m=n+x; n+=1; if(x%j==0) return 0;
return(n+y+m); else return 1;
} }
int main() c) int p(int x)
{ {
y=10; x=12; int j,ok=1;
cout<<T(x,y)); for(j=2;j<x;j++)
cout<< x<< » « <<y; if(x%j==0) ok=0;
} return ok;
a) 43,22,10 b) 43,12,10 }
c) 47,10,12 d) 44,22,11 d) int p(int x)
e) 44,12,11 {
13. Fie programul: int j;
#include<iostream.h> return 1;
void F(……..) for(j=2;j<x;j++)
{ if(x%j==0) return 0;
a+=2; b--; }

2
Clasa a XI-a Subprograme 3

a) se determină factorii primi ai lui n


16. Deduceţi ce numere va afişa programul următor: b) se determină numere prime până la √n
#include<iostream.h> c) se verifică dacă numărul n este prim
int& f(int a,int b,int& c) d) se verifică dacă n se împarte exact la d
{ 20. Fie funcţia :
c=a+b; int f(int a)
return c; {
} if(a>=’A’&& a<=’Z’)
void main() return c+’a’-‘A’
{ else
int x=2,y=3,z=11; return c;
cout<<f(x,y,z)<<” “<<z; }
Ce realizează funcţia ?
} a) converteşte litera mică a în litera mare A
a) 5,11 b) 5,11 c) 5,11 b) converteşte litera mare A în litera mică a
d) 5,11 e) 5,5 c) converteşte literele mici în litere mari
17. Precizaţi valoarea variabilei n rezultată în urma d) converteşte literele mari în litere mici
execuţiei programului: 21. Presupunând că n este numărul de elemente ale unui
#include<iostream.h> vector de numere reale , să se specifice când funcţia de
int f(char a[2]) mai jos întoarce valoarea 0 .
{ int f(int n)
int j=0; {
while(a[j++]); return j; int i;
} for(i=1;i<n-1;i++)
void main() if(x[i]==x[i+1]) return 0;
{ return 1;
int n=f(“abcdefgh”); }
} a) dacă două elemente din vector sunt distincte
a) 0 b) 2 c) 8 b) dacă oricare două elemente din vector sunt egale
d) corpul funcţiei conţine o buclă infinită c) dacă primele două elemente din vector sunt egale
e) programul are erori de sintaxă a) dacă două elemente consecutive sunt egale , fără
18. Fie programul : 22. Se consideră funcţia demai jos :
#include <iostream.h> int f(int n)
void fct(int a,int &b) {
{ int x=0; int c=0;
a+=3; b+=a; while(n)
} { c=n%10;
void main() x=x*10+c;
{ n=n/10;
int c, d; }
c=4; d=5; return x;
fct(c,d); }
cout<<c<<” “<<d; 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 :
} int f(int n)
Ce se afişează pe ecranul monitorului în urma execuţiei { int x=0; int c=0;
programului ? int a=n;
a) 4545 b) 412412 while (n)
c) 712719 d) 412419 { c=n%10;
19. Se dă funcţia : x=x*10+c;
int fct(int n) n=n/10;
{ }
int d=2; if(x==a) return 1;
int g=(int) sqrt(n); else return 0;
int f=1; }
while (d<=g&&f) Valoarea f=1 arată că :
{ a) n este număr prim
f=f&&n%d; b) n este număr par
d=d+1 c) n este palindrom
} d) x este divizor al lui n
return f; 24. Se consideră funcţia următoare :
} int f()
Să se precizeze ce prelucrare se realizează în această { int i;
funcţie : Cout<<i;

3
Clasa a XI-a Subprograme 4

} #include<iostream.h>
Valoarea afişată de funcţie este : void incr(int x,int y,int z)
a) 0 b) 1 c) 32737 { x=x+1;
d) nu se poate preciza valoarea afişată y=y+1;
25. Se consideră subprogramul : z=z+1;
int f(int a,int b) }
{ int r=a%b; void main()
while (r>0) { int a=10, b=20, c=30;
{a=b;b=r;r=a%b;} cout<<a<<” ”<<b<<” ”<<c;
return b; incr(a,b,c)
} cout<<a<<” ”<<b<<” ”<<c;
Pentru a=45 si b=27 , valoarea lui f este: }
a) 3 b) 9 c) 72 d) 135 vor afişa următoarele rezultate:
26. Să se precizeze care sunt valorile care vor fi tipărite de a) a=10 b=20 c=30
programul de mai jos : a=11 b=21 c=31
int i,j; b) a=10 b=20 c=30
void p(int j) a=10 b=20 c=30
{ j++; c) a=11 b=21 c=31
i=j+1; a=10 b=20 c=30
} d) nici una din variantele 1-3
void main() 31. Următoarele linii de cod :
{ i=2; j=4; #include<iostream.h>
p(i); void incr(int &x,int &y,int &z)
cout<<i<<” “<j; { x=x+1;
} y=y+1;
a) 1 6 b) 1 4 c) 4 6 d) 4 4 z=z+1;
27. Se consideră următoarea funcţie : }
float x[10]; void main()
int f(int n) { int a=10, b=20, c=30;
{ int i,k=0; cout<<a<<” ”<<b<<” ”<<c;
for(i=1;i<n;i++) incr(a,b,c)
if(x[i]==x[i-1]) k++; cout<<a<<” ”<<b<<” ”<<c;
return k; }
} vor afişa următoarele rezultate:
Dacă x=(5, 6, 6, 6, 3, 4, 4, 9) valoarea returnată pentru f a) a=10 b=20 c=30
este : a=11 b=21 c=31
a) 3 b) 2 c) 7 d) 5 b) a=10 b=20 c=30
28. Ce face următorul program ? a=10 b=20 c=30
int function p3(int x) c) a=11 b=21 c=31
{ return x*x*x; a=10 b=20 c=30
} d) nici una din variantele 1-3
void main()
32. Parametrii folosiţi la definiţia unui subprogram se
{ int x,y;
cin>>x>>y); numesc:
cout<<p3(x+y); a) globali b) formali c) locali d) actuali
} 33. Care dintre următoarele afirmaţii este adevărată?
a) este eronată a) O funcţie se defineşte şi apelează doar atunci
b) calculează x3 când există o secvenţă de instrucţiuni care se
c) calculează (x+y)3 repetă de mai multe ori
d) calculează y3
b) O funcţie întoarce obligatoriu o valoare
29. Funcţia C :
int functie(double x,int n,int a[]) c) La apelul unei funcţii compilatorul efectuează
{ int k,i; înlocuirea parametrilor formali cu cei actuali
k=0; d) O funcţie trebuie să conţină obligatoriu parametri
for(i=0;i<n;i++) 34. Ce verifică următoarea funcţie?
if(a[i]<x) k++; int f(int n)
return k; {
} int d=2,k=l;
returnează : while(d<=n/2&&k)
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 k=k &&(n%d); d+=l;
c) cele k elemente mai mici egale ca x dintr-un }
vector a return(k && n>=2);
d) cele k elemente mai mari ca x dintr-un vector a }
30. Următoarele linii de cod : a) dacă n este par

4
Clasa a XI-a Subprograme 5

b) dacă n este pătrat perfect else if(i<j) b+=a[i][j] ;


c) dacă n are doar divizori primi }
d) dacă n este prim void main ( )
{
35. Ce valori se vor afişa în urma execuţiei programului? intb=l,c=0;
int n,a=l; f(a,c,b); cout<<b<<" "<<c;
int f(int n)
{ return (n++)+a+2;} }
void main()
a) 65 b) 56 c) 66 d) 1O
{
int a=10; 40. Ce afişează programul următor?
int m=f(a); cout<<n<<" "<<m; typedef struct {int n;} n;
} void f(int x,int &y)
a) O 14 b)1 13 c) O 13 {
d) 1 14 x*=2;y*=2;
36. Se consideră programul: }
f(int a,int &b,int c)
{ void main ( )
a=++b; c=a+=2; {
return a+b+c/3; n x,y;
} x.n=l; y.n=l;
void main() f(x.n,y.n); cout<<x.n<<y.n;
{ f(x.n,x.n); cout<<x.n;
int a,b,c; }
a=b=c=l; a) 228 b) 222 c) 224
cout<<f (a,b,c)<<a<<b<<c; d) 122.
} 41. Ce va afişa programul?
Ce se va afişa în urma rulării sale? struct ex {char c;int n;};
a)3121 b) 7424 c)7121 d)3424 void f (struct ex *a, struct ex *b)
{ a=b; }
37. Ce valoare va returna funcţia f() apelată în
void main ( )
programul principal? {
int f (const char *s)
struct ex
{
el={'#',5},e2={'*',6},*p=&el,*q=
int n=0;
&e2;
for(;*s++! = '\0' ;n++) ;
cout<<p->c<<p->n;
return n;
f(q,P); cout<<q->c<<q->n;
}
}
void main ( )
a)#5#6 b)#5#5 c) *6*6
{
d) #5*6
cout<<f("informatica") ; }
a) 12 b) 11 c) 10 d) 42. Câte apeluri ale funcţiei f() se realizează şi care este
13
ultima linie afişată?
struct complex { float x,y;};
38. Ce valoare va avea variabila a în urma apelului f(a)
void f(struct complex *zl,struct
ştiind că valoarea sa înaintea apelului este 11 şi funcţia
complex z2)
f() este definită astfel:
{
void f(int &m)
zl->x+=z2.x+l; zl->y+=z2.y-l;
{
}
int b=m/10,c=l;
void main ( )
while (b<m/2)
{
{ c*=b%2+m%2; b++ ;}
int i;
m=b*c;
struct complex z;
}
z.x=2.O; z.y=2.O ;
a) 11 b) 16 c) 20 d) O
for(i=0;i<4;i++)
39. Ce se va afişa în urma execuţiei programului următor? {
int a[3][3]={1,2,3,4,5,6}; cout<<z.x<<"+i*"<<z.y<<"\n";
void f(int a[3][3],int &b,int &c) f(&z,z) ;
{ }
for(int i=0;i<3;i++) }
for(int j=0; j<3; j++) a) 4 apeluri şi 23+i*9
if(j>i&&!i%2) c*=a[i][j] ; b)4 apeluri şi 47+i*17
5
Clasa a XI-a Subprograme 6

c) 5 apeluri şi 23+i*9 *s-=32; s++;


d)5 apeluri şi 47+i*17 }
43. Ce va afişa programul? }
int i,j; a) „INFORMATICA" b) „informatica"
int fl(int x,int y) c) „INFORmatica" d) „matica"
{
x-=y; return x; 47. Ce valori ale variabilei a vor fi afişate în urma
} execuţiei programului următor?
void f2(int a,int &b) int a=17;
{ void f(int &b)
int u=a+i, v=b-j+i;b++; {
i=f1(u, a); j=f1(v, b) ; int c=a+b;
} b++;a-- ; cout<<a<<" ";
void main ( ) }
{ void main()
i=j=1; {
f2(i,j); a=10;f(a); cout<<a;
cout<<i<<" "<<j<<" "; }
f2(j,i); cout<<i<<" "<<j; a) 10 10 b) 17 17 c) 10 17
} d) 17 10
a) 1 2 2 2 b) 1 -1 1 -1 c) 1 0
0 -1 d) 1 -1 1 2 48. Ce conţinut va avea şirul t1 în urma execuţiei
44. Rezolvarea conflictelor dintre numele secvenţei:
variabilelor globale şi numele celor locale se face char t1[]="12345", t2[]="103056";
după criteriul: f(tl,t2);

a) variabila globală are prioritate în faţa celei ştiind că funcţia f() este definită astfel?
locale pe parcursul întregului program void f(char s120],char s2[20])
b) variabila locală are prioritate numai în linia { int ll=strlen(sl),l2=strlen(s2) ;
de program în care a fost declarată int i=0;
while (i<ll && i<l2)
c) variabila locală are prioritate în faţa celei globale în
{
corpul de program în care este declarată
if(*(sl+i)==*(s2+i)&&
d) nu se poate ca 2 variabile să aibă acelaşi
sl[i]>='0'&& sl[i]<='9')
nume, chiar dacă una este globală şi cealaltă
s1[i]=’a’+s1[i]-‘0’;
locală
i++;
}
45. Care sunt valorile afişate de programul următor?
}
int a=l,b=2,c=3;
a)„B2D4F" b) „b2d4f c) „a2c4e"
void f()
d)„1c3e5"
{
int a=100; int b=a+c; 49. Ce verifică funcţia test?
c+=a+b; int test (char s[])
cout <<a<<” “<<b<<” “<<c<<”\n”; {
} strlwr (s) ;
void main ( ) int i=0, j=strlen (s)-l, t=l;
{ while (i<j && t)
f(); {
cout <<a<<” “<<b<<” “<<c<<”\n”; if(s[i]>='a' && s[i]<='z'
} && s[i]!=s[j]) t=0;
a)100 103 206 1 2 206 i++; j--;
b) 100 103 206 100 103 206 }
c) 1 4 7 1 2 7 d) 1 4 7 1 2 3 return t;
}
46. Cum se va modifica valoarea variabilei nume a) verifică dacă şirul s de caractere conţine şi
în urma apelului funcţiei modif (nume, 'm'), ştiind caractere nealfabetice
că înainte de apel variabilei i s-a atribuit cuvântul b) verifică dacă şirul s de caractere este
„informatica"? palindromic
void modif(char *s,char c) c) verifică dacă şirul s de caractere este
{ palindromic fără a testa şi caracterele nealfabetice
while(*s && *s!=c) d) verifică dacă şirul s are caracterele nealfabetice
{ aşezate simetric faţă de capetele sale, identic
6
Clasa a XI-a Subprograme 7

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