Sunteți pe pagina 1din 8

1.

Pentru definiţia de mai jos a else


subprogramului f, ce se afişează ca urmare return 0; }7
a apelului 7. Se consideră subprogramul f definit
f(121,1);? alăturat. Ce se va afişa în urmaapelului
void f(long n, int i) f(12345);?
{ if(n!=0) void f(long int n)
if(n%3>0) { if (n!=0)
{ cout<<i; f(n/3,i+1); }} {if (n%2 == 0)
2. Pentru definiţia de mai jos a cout<<n%10; 
subprogramului f, ce se afişează ca urmare f(n/10);}}
a apelului 8. Se consideră subprogramul f, descris
f(12345);? alăturat. Ce se va afişa în urma apelului
void f(long n) f(3);?
{ cout<<n%10; void f(int n)
if(n!=0) { if (n!=0)
{ f(n/100); cout<<n%10;}}5310135 { if (n%2==0)
3. Pentru definiţia alăturată a cout<<n<<’ ’; 
subprogramului f, ce se afişează ca f(n­1);
urmare a apelului f(26);? cout<<n<<’ ’; }
void f (int x) else cout<<endl;}
{ 9. Se consideră subprogramul f cu definiţia
if(x>0) alăturată. Ce valoare are f(1213111,1)?
if(x%4==0) int f (long int n, int k){
{ cout<<’x’; if (n!=0)
f(x­1); } if(n%10==k)
else return 1+f(n/10,k);
{ f(x/3); else return 0;
cout<<’y’; }}xyyy else return 0;}
4. Pentru definiţia alăturată a 10. Se consideră subprogramul cu definiţia
subprogramului f, ce se afişează ca urmare alăturată. Ce valoare are f(3,1)?
a apelului
f(15,2);? int f(int n,int y)
void f (int n, int x) { if(n!=0)
{ if(x>n) { y=y+1;
cout<<0;  return y+f(n­1,y);}
else else return 0;}
if(x%4<=1) f(n,x+1); 11. Care este valoarea expresiei f(23159)
else pentru funcţia f, cu definiţia alăturată?
{ f(n,x+3); int f(int n){
cout<<1;}}01111 int c;
5. Pentru subprogramul f definit mai jos, if (n==0) return 9;
else
ce se afişează ca urmare a apelului
{c=f(n/10);
f(3,17)? if (n%10<c) return n%10;
void f ( int a, int b) else return c;}}
{ if(a<=b) 12. Pentru funcţiile f1 şi f2 definite
{ f(a+1,b­2); cout<<’*’;} else  alăturat, stabiliţi care este valoarea lui
cout<<b;}7***** f2(41382)?
6. Se consideră subprogramul alăturat: long f1(int c)
Ce valoare are f(128,2)? { if (c%2==1) return 1;
int f(int a, int b){ else return 2;}
if (b<1) return ­1; long f2(long n)
else { if (n==0) return 0;
if (a%b==0) else return f1(n%10)+f2(n/10);}
return 1+f(a/b,b);
13. Pentru funcţiile f şi g definite mai jos, 20. Considerăm subprogramul recursiv
stabiliţi care este rezultatul returnat la apelul definit alăturat. Ce se va afişa în urma
f(6)? apelului: f(’C’) 
long g(long x) void f(char c)
{ if (x>9) { if (c>’A’) f(c­1);
return (x/10 + x%10); cout<<c; 
else if (c>’A’) f(c­1);}
return x 21. Pentru subprogramul suma definit
} alăturat, scrieţi valoarea expresiei
long f(int c) suma(5,4).
{ if (c<1) int suma (int a,int b)
return 1;
{ if (a==0 && b==0) return 0;
else
return g(c+f(c­1));
else if (a==0) return 1+suma(a,b­
} 1);
14. Funcţia F are definiţia alăturată. Ce else return 1+suma(a­1,b);
valoareare F(3)? }
int F(int n) 22. Funcţia f are definiţia alăturată.
{if(n==0 || n==1) return 1; a) Ce valoarea are f(17)? (3p.)
else b) Ce valoare are f(22)?
return 2*F(n­1)+2*F(n­2);} int f(int n)
15. Subprogramul f are definiţia alăturată. {if (n<=9) return 0;
Ce se va afişa în urmaapelului f(12345)? if (n%4==0) return 0;
void f(long n) return 1+f(n­3);
{if (n>9) }
{cout<<n/100; 23. Funcţia f are definiţia alăturată:
f(n/10); a) Ce valoare are f(16)?
} b) Scrieţi cea mai mare valoare de două cifre
} pe care o poate avea n astfel încât f(n) să
16. Funcţia f are definiţia alăturată. Ce se va fie egal cu 2.
afişa în urma apelului f(12345,0);? int f(int n)
void f(long n, int i) { if (n<=0) return ­1;
{if (i<n%10) if (n%2==0) return 0;
{cout<<n%10;  if (n%3==0) return 0;
f(n/10,i+1); return 1+f(n­10);}
} 24. Subprogramul afis este definit
} alăturat. Ce se afişează ca urmare a apelului
17. Funcţia F are definiţia alăturată. Ce afis(8);
valoare are F(18)? void afis (int n)
int F(int x){ { cout<<n;
if (x<=1) return x; for (int i=n/2;i>=1;i­­)
else if(n%i==0)afis(i);}
return x+F(x­2);} 25. Subprogramul scrie este definit
18. Funcţia F are definiţia alăturată. Ce alăturat. Ce se afişează ca urmare a apelului
valoare are F(5)? scrie(1,7);
int F(int x) void scrie (int x,int y)
{if(x!=0) return x+F(x­1); {cout<<x<<y; |
else if(x<y)
return x;} {scrie(x+1,y­1);
19. Se consideră subprogramul, f, definit cout<<(x+y)/2;}}
alăturat. Ce valoare are f(100)? 26. Subprogramul f este definit alăturat. Ce
int f(int n) valoarea are f(8,4)?
{ if(n==0) return 0; int f (int x,int y)
else return n%2+f(n/2);} { if(x<y)return 1+f(x+1,y);
if(y<x)return 1+f(y+1,x);
return 1; }
27. Ce se afişează ca urmare a apelului 35. Pentru definiţia alăturată a
p(123); dacă subprogramul p are definiţia subprogramului sc, stabiliţi ce valoare are
alăturată. sc(901324)?
void p (int x) int sc(long x)
{cout<<x; {if(x<10) return x;
if(x!=0){p(x/10); return sc(x/10)+x%10;}
cout<<x%10; } 36. Pentru definiţia alăturată a
28. Subprogramul f este definit alăturat. Ce subprogramului f, ce valoare are f(8)?
se afişează ca urmare a apelului int f(int x)
f(1,4); {if(x<=4) return x*x­3;
void f (int x,int y) return f(x­3)+4;}
{ for (int i=x;i<=y;i++) 37. Pentru definiţia alăturată a
{cout<<i;f(i+1,y);}} subprogramului f, stabiliţi ce valoare are
29. Se consideră subprogramul recursiv f1  f(23461)?
definit alăturat. Ce se va afişa în urma  int f(int x)
apelului f1(5)? {if(x<10){if(x%2!=0)return 0;
void f1(int x) return x;}
{ if (x<=9) if((x%2!=0)
{ cout<<x+1;  return f(x/10);
f1(x+2); return f(x/10)+x%10; }
cout<<x+3; }} 38. Subprogramul f are definiţia alăturată.
30. Subprogramul afis este definit Ce valoare are f(7,2)? Dar f(35,2)?
alăturat. Ce se va afişa în urma apelului int f(int x, int y)
afis(17)? {if(x%y==0)return y;
void afis(int x) else return f(x,y+1);}
{ if (x>3) 39. Subprogramul f are definiţia alăturată.
{ cout<<x­1;  Ce valoare are f(7)? Dar f(100)?
afis(x/3); int f(int x)
cout<<x+1; }} {if(x%6==0)return x;
31. Subprogramul re este definit alăturat. else return f(x­1);}
Ce valoarea are re(1)? Dar re(14)? 40. Subprogramul f are definiţia alăturată.
int re(int i) Ce valoare are f(3)? Dar f(10)?
{ int f(int x)
if (i<9) return 3+re(i+2); {if(x==0)return 0;
else else return f(x­1)+2;}
if (i==9) return ­2; 41. Subprogramul f are definiţia alăturată.
else return 1+re(i­1);} Ce valoare are f(5,10)? int f(int 
32. Se consideră definit subprogramul f . x,int y)
Scrieţi două valori naturale, x1 şi x2, {if(x==y)return x;
(x1<12 şi x2<12) pentru care else if(x<y)return f(x+1,y­1);
f(x1)=f(x2). else return f(x­1,y);
int f(int i) }
{ 42. Subprogramul f are definiţia alăturată.
if (i>12) return 1; Ce valoare are f(4)? Dar f(11)?
else return 1+f(i+2);} int f(int x)
33. Subprogramul scif returnează suma {if(x<1)return 1;
cifrelor unui număr natural transmis ca else return f(x­3)+1;}
parametru. 43. Funcţia f are definiţia alăturată. Dacă
Care este valoarea expresiei f(x) are valoarea 10100, care este
scif(scif(518)+scif(518))? valoarea lui x?
34. Considerăm subprogramul f definit long f(int n)
alăturat. Ce valoare are f(11,7)? {
int f(int x,int y) if(n<=0) return 0;
{if(x<=y) return x­y; else return f(n­1)+2*n;}
return f(y­x,x­1)+3;}
44. Valorile memorate de componentele a. x=tablou(3,v); b. x=tablou(4,v);
vectorului v, cu indicii de la 0 la 5, sunt, în c. x=tablou(5,v); d. x=tablou(0,v);
această ordine: 183, 212, 453, 18, 42, 83. 47. Se consideră subprogramul f, definit
Care dintre următoarele apeluri ale alăturat. Ce valoare are f(4)? Dar f(100)?
subprogramului tab cu definiţia alăturată, long f(unsigned int n)
NU returnează un număr par? { if (n==0) return 0;
int tab (int i,int v[], int c) else return n+f(n­1);}
{ int n; 48. Se consideră subprogramul f, definit
if(i<0) return 0; alăturat. Câte valori ale lui n aparţinând
else intervalului [10, 20] au proprietatea că la
{ n=v[i]; apelul f(n) se obţine valoarea 0?
while(n!=0) int f(unsigned int n)
{ if(n%10==c%10) {if (n==0) return 0;
return 1+tab(i­1,v,c%10); else if(n%2==0)return n
n=n/10; %10+f(n/10);
} else return f(n/10);}
return tab(i­1,v,c%10);}} 49. Se consideră subprogramul f definit
a. tab(4,v,218) b. tab(5,v,72) c. alaturat. Ce se afişează la apelul f(1)?
tab(4,v,123) d. tab(5,v,71) void f(int i)
45. Valorile memorate de componentele {if(i<=5){
vectorului v, cu indicii de la 0 la 5, sunt, în cout<<i<<” ” ;
această ordine: 183, 212, 453, 18, 42, 83. f(i+1);
Care este apelul corect al subprogramului cout<<i/2<<” ”;}
tablou alăturat pentru ca, în urma 50. Se consideră subprogramul f, definit
executării apelului, valoarea variabilei întregi alăturat. Câte valori ale parametrului n
x să fie 2? aprţinând intervalului [1,100] au
int tablou (int i,int v[], int c) proprietatea că la apelul f(n) se obţine o
{int n; valoare nenulă ?
if(i<0) return 0; int f(unsigned int n)
else { if (n>20) return 0;
{ n=v[i]; else return 5+f(n+5);
while(n>9) }
{ if(n%10==c) 51. Se consideră subprogramul f, definit
return 1+tablou(i­1,v,c); alăturat. Ce valoare are f(21114,1)?
n=n/10;} int f(int n,int c)
return tablou(i­1,v,c);}} {
a. x=tablou(2,v,2); b. if(n==0)return 0;
x=tablou(2,v,5); if(n%10==c) return n
c. x=tablou(5,v,2); d. %100+f(n/10,c);
x=tablou(2,v,8); return f(n/10,c);}
46. Valorile memorate de componentele 52. Se consideră subprogramul f, definit
vectorului v, cu indicii de la 0 la 5, sunt, în alăturat. Ce se va afişa la apelul f(38)?
această ordine: 420, 48, 635, 628, 837, 93. void f(int x){
Care este apelul corect al subprogramului if(x){
tablou alăturat pentru ca, în urma if(x%3==0){
executării apelului, valoarea variabilei întregi cout<<3; 
x să fie 3? f(x/3);
int tablou (int i,int v[]) }
{if(i<0) return 0; else{
else { f(x/3);
int n=v[i]; cout<<x%3; }}}
while(n) { 53. Se consideră subprogramul f, definit
if(n%2)return 1+tablou(i­1,v); alăturat. Ce valoare are f(3713,3)?
n=n/10; } int f(int n,int c){
return tablou(i­1,v); }}
if(n==0) 60. Se consideră funcţia f, definită alăturat.
return 0; Ce se afişează ca urmare a executării
if(n%10==c) secvenţei de
return f(n/10,c)*10+c; mai jos ?
return f(n/10,c);} a=4; b=18; 
54. Se consideră subprogramul f, definit cout<<f(a,b);cout<<a<<b;
alăturat. Ce valoare are f(261,31)? int f(unsigned int &a,
int f(int a,int b) unsigned int &b)
{ { while (a !=b)
if(a<10) if (a>b) a=a­b;
return b; else b=b­a;
return f(a/10,b)*10+b+1;} return a;}
55. Se consideră subprogramul f, definit 61. Se consideră subprogramul recursiv
alăturat. Ce valoare are f(398,2008)? definit alăturat. Ce valoare are functie(4)?
int f(int a,int b){ int functie(int x)
if(2*a>=b) {if (x<=0) return 3 ;
return 0; else return functie(x­3)*4 ;}
if(b%a==0) 62. Se consideră subprogramul recursiv
return b­a; definit alăturat. Pentru ce valoare a
return f(a+1,b­1);} parametrului u,
56. Se consideră tabloul unidimensional a  alfa(u) are valoarea 25 ? Pentru u=6, 
definit global, ce memorează elementele ce valoarea returnează alfa(u)?
a1=12, a2=35, a3=2, a4=8 şi subprogramul int alfa(int u)
f, definit alăturat. Ce valoare are f(4)? {if (u==0) return 3;
int f(int x) else return alfa(u­1)+3*u­2;}
{if(x>=1) 63. Se consideră subprogramul recursiv
return (a[x]+f(x­1))%10; definit alăturat. Ce valori vor fi afişate pe
else ecran în urma apelului gama(6)?
return 0;} void gama(int n)
57. Considerăm subprogramul f, definit {int i;
alăturat. Care va fi valoarea variabilei globale if(n>=3)
x după apelul f(4962,x), dacă înainte de {for(i=3;i<=n;i++)
apel, x are valoarea 0? cout<<n<<” ”;
void f1(int n,int &a) gama(n­3);}}
{int c; 64. Se consideră subprogramul recursive
if(n!=0){c=n%10; definit alăturat. Ce valori vor fi afişate pe
if(a<c) a=c; ecran în urma apelului beta(15)?
f1(n/10,a);}} void beta(int n)
58. Se consideră tabloul unidimensional a  {if (n!=1)
definit global, ce memorează elementele {cout<<n<<” ”;
a1=1, a2=2, if (n%3==0) beta(n/3);
a3=0 şi subprogramul f, definit alăturat. Ce else beta(2*n­1);}
valoare are f(3,3)? else cout<<1;}
int f(int b,int i) 65. Se consideră subprogramul recursiv
{ if(i>=1) definit alăturat. Care este cea mai mică
return f(b,i­1)*b+a[i]; valoare de 2 cifre a lui u pentru care funcţia
else return 0;} bac(u,2) are valoarea 1 ?
59. Se consideră subprogramul f, definit int bac(int u, int x)
alăturat. Ce se va afişa în urma apelului {if (u<x)return 0;
f(5,0)? if (x==u)return 1;
void f(int i,int j) else
{ if(j<=9) f(i,j+1); if (u%x==0)return 0;
cout<<i<<’*’<<j<<’=’<<i*j<<endl; else
} return bac(u,x+1);}
66. Ce valoare va avea variabila întreagă x, 73. Pentru definiţia alăturată a
în urma apelului F(1, x), ştiind că, înainte subprogramului sub, stabiliţi care este
de apel, variabila x are valoarea 0, iar valoarea expresiei sub(123986).
subprogramul F este definit alăturat? int sub(long n)
void F(int i, int &x) {if (n!=0)
{ if (i <= 10) if(n%2!=0) return 1+sub(n/10);
{ if(i % 2) x = x + 2; else return sub(n/10);
else x = x – 1; else return 0; }
F(i + 1, x); 74. Pentru definiţia alăturată a
}} subprogramului f, ce valoare are expresia
67. Scrieţi ce se va afişa în urma executării f(1209986)?
subprogramului alăturat, int f(long x)
la apelul F(57). { int y,z;
void F(int x) if (x==0) return x;
{ if(x != 0) else {y=x%10;
{ F(x/2); z=f(x/10);
cout << x%2; }} if(y>z) return y ;
68. Ce se va afişa în urma executării else return z;} }
subprogramului alăturat, la apelul F(56)? 75. Pentru definiţia alăturată a
void F(int x) subprogramului sub, ce valoare are
{ if(x) sub(132764)?
{ F(x/2); int sub(long n)
cout << x%10;}} {if (n!=0)
69. Se consideră funcţia Suma, definită if(n%2!=0) return n%10+sub(n/10);
alăturat. Ce valoare are Suma(8)? Dar else return sub(n/10);
Suma(11)? else return 0;}
int Suma(int x) 76. Pentru definiţia alăturată a
{ if(x == 1 ) return 0; subprogramului f, scrieţi ce valoare are
if(x%2==0) return Suma(x­1)+(x­ f(5552,5).
1)*x; int f(int x,int y)
return Suma(x­1)­(x­1)*x;} { if(x==0)return 0;
70. Ce se va afişa în urma apelului else
F(2758), pentru funcţia F definită alăturat? if(x%10==y) return f(x/10,y)+1;
int F(int x) else return f(x/10,y); }
{if(x == 0) return 0; 77. Pentru definiţia alăturată a
if(x%10%2 == 0) return 2 +  subprogramului f, stabiliţi ce valoare are
F(x/10); f(123)?
return 10 – F(x/10)}; int f(int x)
71. Pentru definiţia alăturată a { if(x==0)return 0;
subprogramului sub, stabiliţi ce valoare are else
sub(132764). if(x%2==0)return 1+f(x/10);
long sub(long n) else return 2+f(x/10); }
{if (n!=0) 78. Pentru definiţia alăturată a
if(n%2!=0) return n%10*sub(n/10); subprogramului f, stabiliţi ce valoare are
else return sub(n/10); f(123)?
else return 1; } int f(int x)
72. Pentru definiţia alăturată a { if(x==0)return 0;
subprogramului sub, stabiliţi ce valoare are else
sub(132764). if(x%2==0)return 3+f(x/10);
int sub(long n) else return 4+f(x/10); }
{if (n!=0) 79. Pentru definiţia alăturată a
if(n%2!=0) return n%10+sub(n/10); subprogramului f, stabiliţi ce valoare are
else return sub(n/10); f(100)?
else return 0; } int f(int x)
{ if(x==0)return 1; { if (. . .)
else {cout<<i<<’ ’;
return 1+f(x­1);} f(i/2);
80. Pentru definiţia alăturată a cout<<i<<’ ’;}}
subprogramului f, scrieţi ce valoare are 87. Se consideră definit subprogramul f.
f(100). a) Ce se va afişa în urma apelului
int f(int x) f(14)?
{ if(x==50)return 1; b) Scrieţi valorile pe care le poate avea x,
else astfel încât în urma apelului f(x), să se
return 2+f(x­1); } afişeze pe ecran exact 10 numere.
81. Se consideră subprogramul f, definit void f(int x)
alăturat. Ce se afişează la apelul f(4)? { if (x<=10)
void f(int n) cout<<0<<” ”; 
{cout<<"*";  else
if(n>2) { f(x­2);
{ cout<<x<<” ”; }}
f(n­1); 88. Subprogramul f este definit alăturat. Ce
cout<<"#"; }} se afişează ca urmare a apelului de mai jos?
82. Se consideră subprogramul f, f(1,4);
definitalăturat. Ce se afişează la apelul void f (int x,int y)
f(4)? { if (x<y){x=x+1;f(x,y);
void f(int n) y=y­1;f(x,y);}
{ else
if(n>0) cout<<x<<y; }
{ 89. Funcţia f este astfel definită încât
cout<<n;  f(1)=8, iar f(n+1)=2*f(n)­4 (n natural,
f(n­1); n>1).
cout<<n; }} a) Ce valoare are f(5) ?
83. Se consideră subprogramul f, definit b) Care este cea mai mare valoare pe care o
alăturat. Ce valoare are f(4)? poate lua x astfel încât f(x) < 1000 ?
int f(int n) 90. Funcţia f are definiţia alăturată. Scrieţi
{ if (n==0) return 1; cinci valori de apel pe care le poate avea n 
else if (n==1) return 2; astfel încât, pentru cele 5 apeluri
else return f(n­1)­f(n­2);} corespunzătoare acestor valori, să se obţină
84. Se consideră subprogramul f, definit 5 valori ale funcţiei, disticte două câte două.
alăturat. Ce valoare are f(4)? int f(int n)
long f(int n) { if (n<=9) return 0;
{if (n==0) return 0; if (n%5==0) return 0;
else return n*n+f(n­1);} return 1+f(n­3); }
85. Se consideră subprogramul f, definit 91. Funcţia f are definiţia alăturată. Scrieţi
alăturat. Ce se afişează la apelul f('a')? 4 valori de apel pe care le poate avea n 
void f(char c) astfel încât, pentru cele 4 apeluri,
{ corespunzătoare acestor valori, să se obţină
if (c != 'e') 4 valori, disticte două câte două.
{ int f(int n)
f(c+1); {if (n<=9) return 0;
cout<<c; }} if (n%4==0) return 0;
86. Subprogramul recursiv alăturat este return 1+f(n­3); }
definit incomplet. Scrieţi expresia care poate 92. Subprogramul recursiv alăturat este
înlocui definit incomplet: Care dintre următoarele
punctele de suspensie astfel încât, în urma expresii poate înlocui punctele de suspensie
apelului, f(12) să se afişeze şirul de valori: astfel încât, în urma apelului, subprogramul f
12 6 3 1 1 3 6 13. să returneze suma primelor două cifre ale
void f(int i) numărului primit prin intermediul parametrului
x.
Exemplu: în urma apelului f(2318) 
valoarea returnată este 5.
int f(int x){
if (...)
return x%10 + x/10;
else
return f(x/10);} 
93. Se consideră subprogramul recursive
alăturat, definit incomplet. Cu ce valoare
trebuie înlocuite punctele de suspensie,
pentru ca funcţia să returneze cifra minimă a
numărului natural nenul transmis prin
intermediul parametrului x?
int Min(int x){
int c;
if (x==0) return ...;
else {
c=Min(x/10);
if (c < x%10) return c;
else return x%10;}}
94. Se consideră subprogramul recursiv
alăturat, S, definit incomplet. Cu ce expresie
pot fi înlocuite punctele de suspensie astfel
încât, în urma apelului S(2), să se afişeze 3
caractere * ?
void S(int x)
{ cout<<'*';
if (...) {
cout<<'*';
S(x­1);}}
95. Ce afişează subprogramul F, descris
alăturat, la apelul F(5)? )
void F(int x)
{ cout<<x; | printf(“%d”,x);
if(x>=3)
F(x­2);
cout<<x­1; | printf(“%d”,x­1);}

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