Documente Academic
Documente Profesional
Documente Cultură
Subprograme
a. 210 b. 110 c. 0 d. 20
1
function f(int n) : longint; long f(int n)
begin {if (n==0) return 1;
if n=0 then f := 1 else
else if (n==1) return 4;
if n=1 then f := 4 else
else f := f(n-1) – f(n-2) return f(n-1) – f(n-2);
end; }
a. 1 b. 3 c. -3 d. 4
2
function f(x,y:integer):integer; int f(int x,int y)
begin { if (x>y) return 0;
if (x>y) then f:=0 else
else if (x%2!=0)
if (x mod 2<>0) then return 1+f(x+1,y);
f:=1+f(x+1,y) else return f(x+1,y);
else f:=f(x+1,y) }
end;
a. 3 b. 2 c. 4 d. 5
3
function f(n:integer):integer; int f(int n)
var m:integer; {
begin if(n==0)return -1;
if n=0 then f:=-1 int m=f(n/10);
else if(n%2||m>n%10)return m;
begin m:=f(n div 10); return n%10;
if(n mod 2<>0)or(m>n mod 10) }
then f:=m
else f:=n mod 10
end
end;
a. -1 b. 2 c. 6 d. 1
4
16. V_27_I_6.Câte caractere * se afişează în urma apelului stea(3)?
5
20. V_60_I_3.Pentru definiţia alăturată a subprogramului f, ce se valoare are
expresia f(245284003)?
function f(n:longint):integer; int f(long n){
begin if(n==n%10) return n ;
if n=n mod 10 then f:=n return f(n/10);
else f:=f(n div 10) }
end;
a. 3 b. 0 c. 2 d. 9
6
procedure ex( x:byte); void ex(int x)
begin {if(x!=0) {
if x<>0 then begin printf("%d",x%10);
write(x mod 10); / cout<<x%10;
ex(x div 10) ex(x/10);
end }
end; }
a. 021 b. 012 c. 120 d. 21
7
procedure ex(n,m: word; void ex(int n, int m, int &z)
var z:word);
var c:byte; { int c;
begin if(n+m>0)
if n+m>0 then begin { c=n%10;
c:=n mod 10; if(m%10>c)c=m%10;
if m mod 10>c then z=z*10+c;
c:=m mod 10; ex(n/10,m/10,z);
z:=z*10+c; }
ex(n div 10,m div 10,z) end }
end;
8
30. V_83_I_5. Fie subprogramul recursiv:
9
procedure Scrie(i,j:integer); void Scrie(int i, int j)
begin {
if i <= 3 then if(i <= 3)
if j <= i then if(j <= i)
begin { rintf("*");|cout<<'*';
write('*'); Scrie(i, j+1);
Scrie(i, j+1) }
end else Scrie(i+1, 1);
else Scrie(i+1, 1) }
end;
a. 5 b. 6 c. 3 d. 10
10
37. V_88_I_3. Fie subprogramul f definit mai jos. Ce se afişează în urma
apelului f(523)?
procedure f(x:integer); void f(int x)
begin {
write(x mod 10); cout<<x%10; / prinf(“%d”,x%10);
if x>9 then f(x div 10); if(x>9) f(x/10);
write(x mod 10) cout<<x%10; / prinf(“%d”,x%10);
end; }
a. 325523 b. 325325 c. 325 d. 523523
a. n mod i şi i a. n%i=0 şi i
b. n mod (i-1) şi i-1 b. n%(i-1) şi i-1
c. n mod (i-1) şi i c. n%(i-1)=0 şi i
d. n mod i şi i-1 d. n%i şi i-1
11
40. V_85_I_6. Se consideră funcţia recursivă:
12
procedure p(x,y,k:integer); void p(int x,int y,int k)
begin {if(x>1)
if x>1 then if(x%y==0)
if x mod y =0 then begin {if(k==1)
if k=1 then write(y,' '); printf("%d ",y);
p(x div y,y,k+1) | cout<<y<<" ";
end p(x/y,y,k+1);
else p(x,y+1,1) }
end; else p(x,y+1,1);
}
a. 2 b. 2 3 3 5 7 c. 2 3 5 7 d. 2 1 3 2 5 1 7 1
13
47. V_69_I_3.Se consideră subprogramul recursiv cu definiţia alăturată:
14
50. V_90_I_2.Se consideră subprogramul f cu definiţia următoare şi o variabilă
y de tip integer /int:
procedure f(x:integer; var k:integer); void f(int x, int&k)
begin {if (x>1)
if x>1 then {k=k+1;
begin k:=k+1; f(x-1,k) end f(x-1,k);}
end; }
Ce se va afişa în urma executării secvenţei de program următoare:
y:=0; f(4, y); y=0; f(4, y);
write(y); cout<<y;/ printf(“%d”, y);
a. 4 b. 0 c. 5 d. 3
a. 2 b. 3 c. 5 d. 9
53. V_14_I_6. Pentru funcţiile f1 şi f2 definite mai jos, stabiliţi care este
rezultatul returnat la apelul f2(305)?
15
function f1(c:integer):longint; long f1(int c)
begin {if (c<1) return 1;
if c<2 then f1:=1 else return c*f1(c-1);
else f1:=c*f1(c-1) }
end;
long f2(long n)
function f2(n:longint):longint; {if (n==0) return 0;
begin else
if n=0 then f2:=0 return f1(n%10)+f2(n/10);
else f2:=f1(n%10)+f2(n/10) }
end;
a. 126 b. 3 c. 127 d. 8
54. V_15_I_6. Pentru funcţiile f1 şi f2 definite mai jos, stabiliţi care este
rezultatul returnat la apelul f1(6)?
function f2(x:longint):longint; long f2(long x)
begin { if (x%2==0)
if x mod 2=0 then f2:=f2(x div 2) return f2(x/2);
else f2:=x else return x; }
end;
long f1(int c)
function f1(c:integer):longint; { if (c<1) return 1;
begin else
if c<2 then f1:=1 return f2(c*f1(c-1)); }
else f1:=f2(c*f1(c-1))
end;
a. 720 b. 16 c. 45 d. 360
16
57. V_42_I_3. Se consideră subprogramul numar având definiţia de mai jos.
Care este valoarea returnată de funcţie pentru apelul numar(5)?
function numar(n:integer); int numar(int n)
begin { if (n<=0) return 0;
if n<=0 then numar:=0; else
else numar:=2*n+numar(n-1) return 2*n+numar(n-1);
end; }
a. 15 b. 30 c. 10 d. 20
60. V_44_I_5. Fie funcţia numara prezentată mai jos. Care este apelul corect al
funcţiei numara pentru a verifica dacă un număr natural n este prim?
17
function int numara(int x,int y)
numara(x,y:integer):integer; {if (y==0) return 0;
begin else
if y=0 then numara:=0 if (x%y==0)
else return numara(x,y-1)+1;
if x mod y=0 then else
numara:=numara(x,y-1)+1 return numara(x,y-1);
else numara:=numara(x,y-1); }
end;
a. if numara(n,n)=2 then a. if (numara(n,n)==2)
cout<<”prim”;
write('prim');
/ printf(”prim”);
b. if numara(2,n)=2 then b. if (numara(2,n)==2)
cout<<”prim”;
write('prim');
/ printf(”prim”);
c. if numara(n,2)=0 then c. if (numara(n,2)==0)
cout<<”prim”;
write('prim');
/ printf(”prim”);
d. if numara(n,n/2)=2 then d. if (numara(n,n/2)==2)
cout<<”prim”;
write('prim');
/ printf(”prim”);
61. V_46_I_5. Pentru subprogramul de mai jos, apelul func(4) are ca rezultat:
function func(x: integer):integer; int func(int x) {
begin if(x<=0) return -1;
if x<=0 then func := -1 else
else return
func:=1 div func(x-1)-2*func(x-2) 1/func(x-1)-2*func(x-2);
end; }
a. -1 b. -5 c. -6 d. 0
18
63. V_50_I_1. Fie subprogramul cu definiţia alăturată. Care dintre următoarele
instrucţiuni determină afişarea valorii -9?
function f (n:integer):integer; int f (int n)
begin {
if n<=0 then f:=-1 if(n<=0) return -1;
else else
f:=f(n-1)-2*f(n-2)+3*f(n-3) return f(n-1)-
2*f(n-2)+3*f(n-3);}
end;
a. writeln(f(4)) a. printf(”%d”,f(4)) | cout<<f(4)
b. writeln(f(6)) b. printf(”%d”,f(6)) | cout<<f(6)
c. writeln(f(5)) c. printf(”%d”,f(5)) | cout<<f(5)
d. writeln(f(7)) d. printf(”%d”,f(7)) | cout<<f(7)
64. V_71_I_6. Care trebuie să fie valoarea variabilei întregi v în apelul F(v,s)
dacă valoarea iniţială a variabilei întregi s este 0, iar valoarea acesteia în
urma executării subprogramului F, definit alăturat, este 4301?
procedure F( n:longint; void F(long int n,long int &s)
var s :longint); { if (n > 0)
begin {s = s * 10 + n % 10;
if n > 0 then F(n / 10, s);
begin }
s := s * 10 + n mod 10; }
F(n div 10, s)
end
end;
a. 1043 b. 1304 c. 4301 d. 1034
19
66. V_94_I_3. În subprogramul recursiv alăturat se consideră că v este un
vector declarat global, format din numere întregi. Pentru care dintre vectorii v
următori, expresia Pascal: ddd(1,19), respectiv C/C++: ddd(0,18),
returnează valoarea 10?
a. (1,2,1,2,3,1,2,3,4,1,1,2,3,4,1,2,3,1,2)
b. (1,0,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0)
c. (1,2,1,2,3,1,2,3,4,0,4,3,2,1,3,2,1,2,1)
d. (1,1,1,1,1,1,1,1,1,0,2,2,2,2,2,2,2,2,2)
a. (1,2,3,4,5,6,7,8,9,10) a. (0,1,2,3,4,5,6,7,8,9)
b. (0,8,2,6,4,5,3,7,1,9) b. (1,9,3,7,5,6,4,8,2,10)
c. (1,9,3,7,5,6,4,8,2,10) c. (0,8,2,6,4,5,3,7,1,9)
d. (10,2,8,4,6,5,7,3,9,1) d. (9,1,7,3,5,4,6,2,8,0)
20
69. V_48_I_4. Fie vectorul v cu indicii de la 0 la 7, vector ce reţine, în ordine,
următoarele valori întregi: 100,200,243,132,413,352,222,341. Care
este apelul corect al subprogramului alăturat astfel încât valoarea returnată
să fie 5?
function f(poz,c:integer; int f(int poz,int v[],int c)
var v:vector): integer; { if(poz<0) return c;
var nr:integer; else {
begin int nr=v[poz];
if poz<0 then f:=c while(nr) {
else begin if(nr%10>c) c=nr%10;
nr:=v[poz]; nr=nr/10;
while nr>0 do begin }
if nr mod 10>c then return f(poz-1,v,c);
c:=nr mod 10; }
nr:=nr div 10 }
end;
f:=f(poz-1,c,v) end end;
a. writeln(f(4,4,v)) a. printf(”%d”,f(4,v,4)) / cout<<f(4,v,4)
b. writeln(f(7,0,v)) b. printf(”%d”,f(7,v,0)) / cout<<f(7,v,0)
c. writeln(f(7,6,v)) c. printf(”%d”,f(7,v,6)) / cout<<f(7,v,6)
d. writeln(f(4,0,v)) d. printf(”%d”,f(4,v,0)) / cout<<f(4,v,0)
21
71. V_22_I_6. Ştiind că p este un vector cu 3 componente întregi ( vector
declarat global), M este mulţimea tuturor cifrelor nenule, iar subprogramul
tipar afişează valorile elementelor
p[1],p[2] şi p[3], p[0],p[1] şi p[2],
cu ce trebuie înlocuite simbolurile α, β şi γ în definiţia funcţiei G astfel
încât în urma apelului G(1) să se afişeze toate elementele produsului
cartezian M×M×M?
procedure G(k:integer); void G(int k)
var i:integer; {int i;
begin for(i=α;i<=β;i++){
for i:=α to β do begin p[k]=i ;
p[k]:=i; if(k==γ)tipar();
if k=γ then tipar else G(k+1);}
else G(k+1) }
end
end;
a. α=0 β=10 γ=3 a. α=0 β=10 γ=3
b. α=1 β=3 γ=9 b. α=1 β=3 γ=9
c. α=1 β=9 γ=2 c. α=1 β=9 γ=3
d. α=1 β=9 γ=3 d. α=1 β=9 γ=2
22
2. V_81_III_3. Scrieţi un subprogram recursiv cu un singur parametru n,
număr natural cu cel mult 9 cifre, care să afişeze pe ecran numai cifrele impare
ale lui n, în ordinea în care ele apar în număr, ca în exemplul de mai jos. Dacă
numărul are numai cifre pare, nu se va afişa nimic.
De exemplu pentru n=29385567 se va afişa 93557.
23