Academos
  1. Subiecte
  2. Bacalaureat
  3. Informatică mate-info, C
  4. Subiectul I, 2.

Subiectul I, 2., toate variantele

Bacalaureat, Informatică mate-info, C, 2021-2026. Rezolvă-le pe rând, cu baremul la îndemână.

Sesiuni de examen

Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte.

Subprogramul f este definit alăturat. Indicați valoarea f(1,10).

int f(int n,int m) { if(n>=m) return 0; else return 1+f(n+1,m-2); }

a. 1 b. 3 c. 5 d. 7

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: b

SUBIECTUL I (20 de puncte) 2b 5x4p.

Subprogramul alăturat, f, este incomplet definit. Indicați expresia cu care pot fi înlocuite punctele de suspensie, astfel încât, în urma apelului de mai jos, să se afișeze 7.

f(35,17);

void f(int n, int d) { if(n%d==0) cout<<d; | printf("%d",d); else f(........); }

a. n+1,d+1 b. n-1,d-1 c. n,d+1 d. n,d-1

Arată baremul

Răspuns: d

SUBIECTUL I 2d 5x4p.

Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos. f(2050);

void f(int n) { cout<<n<<' '; | printf("%d ",n); if(n%10!=0) { cout<<n<<' '; | printf("%d ",n); f(n/10); } else if(n!=0){ f(n/10); cout<<n<<' '; | printf("%d ",n); } }

a. 2050 205 20 2 0 b. 2050 205 20 2 0 20 2050 c. 2050 205 205 20 2 2 0 20 2050 d. 2050 2050 205 205 20 20 2 2 0

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: c

SUBIECTUL I 2c 5x4p.

Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos. f(3);

void f(int n) { int i; for(i=1;i<=n;i++)if(i%2==0){ cout<<i; | printf("%d",i); f(i-1); } else { f(i-1); cout<<i; | printf("%d",i); } }

a. 1211213 b. 123121 c. 123 d. 01201012013

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: a

SUBIECTUL I 2a 5x4p.

Variabila k este de tip întreg, iar variabila s permite memorarea unui șir de maximum 20 de caractere. Indicați valoarea variabilei k în urma executării secvenței alăturate.

strcpy(s,"calculator"); k=strchr(s,s[1])-strchr(s,s[3]);

a. 9 b. 3 c. 2 d. 1

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I 2d 5x4p.

Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos.

f(9);

void f(int x) { if(x%5!=0) { x=x*5/2; f(x);} else x=x-1; cout<<x; | printf("%d",x); }

a. 225554 b. 545522 c. 55109 d. 92255

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: b

SUBIECTUL I 2b 5x4p.

Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos.

f(2020,0);

void f(int x, int y) { if (x<10) cout<<x; | printf("%d",x); else { f(x/10,y+1); cout<<x%10; | printf("%d",x%10); } cout<<y; | printf("%d",y); }

a. 23020 b. 2022100 c. 02023210 d. 23022100

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I 2d 5x4p.

Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte. Identificatorii utilizați în rezolvări trebuie să respecte precizările din enunț (bold), iar în lipsa unor precizări explicite, notațiile trebuie să corespundă cu semnificațiile asociate acestora (eventual în formă prescurtată). Datele de intrare se consideră corecte, validarea lor nefiind necesară.

Subprogramul f este definit alăturat. Indicați un apel în urma căruia se afișează pe ecran secvența: 13579

void f(int x,int y,int z) { if(z<x) { cout<<y; | printf("%d",y); f(x,y+2,z+1); } }

a. f(5,0,0); b. f(5,1,1); c. f(6,1,6); d. f(6,1,1);

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I 2d 5x4p.

Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte.

Subprogramul f este definit alăturat. Indicați valoarea f(35,3).

int f(int n,int k) { if(n==0 || k==0) return 0; return n%k+10*f(n/k,k); }

a. 1022 b. 355 c. 102 d. 33

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: a

SUBIECTUL I 2a 5x4p.

Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos. f(23);

void f (int n) { if(n!=0) f(n/2); cout<<n%2; | printf("%d",n%2); }

a. 100111 b. 111010 c. 010111 d. 01251123

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: c

SUBIECTUL I 2c 5x4p.

Subprogramul f este definit alăturat. Indicați valoarea f(3,2).

int f(int x, int y) { int z; if (y==0) return 1; z=f(x,y/2); if (y%2!=0) return z*z*x; return z*z; }

a. 1 b. 2 c. 9 d. 18

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: c

SUBIECTUL I 2c 5x4p.

Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte. Identificatorii utilizați în rezolvări trebuie să respecte precizările din enunț (bold), iar în lipsa unor precizări explicite, notațiile trebuie să corespundă cu semnificațiile asociate acestora (eventual în formă prescurtată). Datele de intrare se consideră corecte, validarea lor nefiind necesară.

Subprogramul f este definit alăturat. Indicați valoarea parametrului x pentru care f(x,3) are valoarea 2022.

int f(int n,int p) { if(n==0) return 0; else if(p==0) return n*10+2; else return f(n/10,p-1); }

a. 120234 b. 122023 c. 202345 d. 220223

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: c

SUBIECTUL I (20 de puncte) 2c 5x4p.

Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte.

Variabilele x și valoare sunt declarate alăturat. Indicați o instrucțiune de atribuire corectă din punctul de vedere sintactic.

struct produs { char denumire[50]; float cantitate, pret; }x; float valoare;

a. x=("apa minerala",10,2.5); b. x.produs.pret=2.5; c. x.denumire[5]="Borsec"; d. valoare=2*x.cantitate*x.pret;

Arată baremul

Răspuns: d

SUBIECTUL I (20 de puncte) 2d 5x4p.

Subprogramul f este definit incomplet, alăturat. Indicați o expresie cu care pot fi înlocuite punctele de suspensie pentru ca f(n,3) să aibă valoarea 1 pentru orice număr prim n (n∈[2,10⁴]) și valoarea 0 în caz contrar.

int f(int x, int y) { if(x!=2 && x%2==0) return 0; if(y*y>x) return 1; if(x%y==0) return 0; return f(x,.........); }

a. y+2 b. y-2 c. y*2 d. y/2

Arată baremul

Răspuns: a

SUBIECTUL I 2a 5x4p.

Utilizând metoda backtracking se generează toate valorile naturale formate cu cifre ale numărului 2021 și care sunt strict mai mici decât acesta. Primele 12 soluții generate sunt, în această ordine, 0, 1, 10, 100, 1000, 1001, 1002, 101, 1010, 1011, 1012, 102. Indicați două soluții care se generează pe poziții consecutive, în această ordine. a. 2002, 2020 b. 2020, 21 c. 122, 1221 d. 21, 22

Arată baremul

Răspuns: b

SUBIECTUL I 2b 5x4p.

Subprogramul f este definit alăturat. Indicați valorile pe care le pot avea parametrii n și c, astfel încât, în urma apelului, f(n,c) să aibă valoarea 2021.

int f(int n,int c) { if(n==0) return 0; else if(n%10==c) return f(n/10,c); else return n%10+10*f(n/10,c); }

a. n=2021 și c=0 b. n=200211 și c=2 c. n=312032 și c=3 d. n=720721 și c=7

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I 2d 5x4p.

Subprogramul f este definit alăturat. Indicați valoarea lui f(1234).

int f(int n) { if (n!=0) return (n%2)*(n%10)+f(n/10); return 0; }

a. 0 b. 4 c. 6 d. 10

Arată baremul

Răspuns: b

2b - 4p. (5x4p. pentru itemii 1–5.)

Simulări, modele de subiect și subiecte de rezervă

Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte.

Subprogramul f este definit alăturat.

int f(int s,int d,int v[]) { if(s==d) if(v[d]==2*d)return 1; else return 0; else return f(s,(s+d)/2,v) + f(1+(s+d)/2,d,v); }

Știind că variabila x memorează un tablou unidimensional cu elementele (2,0,2,6,8), în această ordine, numerotate de la 0 la 4, indicați valoarea f(0,4,x).

a. 1 b. 2 c. 4 d. 5

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: b

SUBIECTUL I (20 de puncte) 2b 5x4p.

Un mozaic este alcătuit din plăcuțe de formă pătrată, cu dimensiuni egale, de culoare albă sau roșie, așezate pe două rânduri și aliniate ca în exemplu. Mozaicul are un model în zig-zag dacă oricare două plăcuțe cu o latură comună au culoare diferită. Se știe că plăcuțele de pe latura din dreapta au culori diferite. Variabilele j și ok sunt întregi, iar variabila a este un tablou bidimensional cu două linii și 12 coloane, cu elemente de tip char, în care fiecare linie, în ordine, memorează succesiunea de plăcuțe aflate pe un rând al mozaicului, notându-se cu litera R cele roșii și cu litera A cele albe. Liniile și coloanele sunt numerotate începând de la 0. Indicați expresia care poate înlocui punctele de suspensie astfel încât, în urma executării secvenței C/C++ obținute, variabila ok să aibă valoarea 1, dacă mozaicul are un model în zig-zag, sau valoarea 0 în caz contrar. Exemplu: în urma executării secvenței pentru tabloul de mai jos, unde sunt evidențiate două zone în care nu se respectă modelul, ok=0.

ok=1; for(j=0;j<11;j++) if(........) ok=0;

R A A R A R A R A R A R A R R A R A R A R R R A

a. a[0][j]==a[0][j-1] || a[0][j]==a[1][j-1] b. a[0][j]==a[0][j+1] || a[0][j]==a[1][j+1] c. a[0][j]==a[0][j-1] || a[0][j]==a[1][j+1] d. a[0][j]==a[0][j+1] || a[0][j]==a[1][j]

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I (20 de puncte) 2d 5x4p.

Subprogramul f este definit alăturat. Indicați valoarea f(2,5).

int f(int n,int x) { if(n>0) return f(f(n-2,x)-2,x-5); return x; }

a. 3 b. 0 c. -2 d. -5

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I 2d 5x4p.

Subprogramul f este definit alăturat. Indicați apelul în urma căruia se obține valoarea 2025.

int f(int x) { if(x>500) return 5; else return 5*f(x*10+5)+x; }

a. f(5) b. f(2) c. f(1) d. f(0)

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I 2d 5x4p.

Variabila m, declarată alăturat memorează, pentru un medicament codul, procentul de compensare și data expirării (ziua, luna și anul). Indicați o expresie C/C++ cu valoarea 1 dacă și numai dacă medicamentul expiră în anul 2025, după luna octombrie.

struct data { int zi,luna,an;}; struct medicament { int cod; float compensare; data expira; }m;

a. m.data.an==2025 && m.data.luna>10 b. data.an.m==2025 && data.luna.m>10 c. m.expira.an==2025 && m.expira.luna>10 d. m.an.expira==2025 && m.luna.expira>10

Arată baremul

Răspuns: c

SUBIECTUL I 2c 5x4p.

Subprogramele f1, f2 și f3 sunt definite mai jos.

int f1(int n) { return n*(n+1)/2; }

int f2(int n) { if(n!=0) return n+f2(n-1); return 0; }

int f3(int n) { if(n==0) return 0; if(n%2==1) return n+f3(n-1); return n*n/4+2*f3(n/2); }

Pentru n=24, se obține aceeași valoare la apelul subprogramelor:

a. f1 și f2 b. f1 și f3 c. f2 și f3 d. f1, f2 și f3

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I: 2d. 5x4p.

Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos.

f(2024);

void f(int x) { if(x>=24) if(x%2==0) { cout<<2; | printf("2"); f(x/2); } else { f(x/2); cout<<4; | printf("4"); } else cout<<0; | printf("0"); }

a. 04424222 b. 22220444 c. 22242440 d. 44402222

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: b

SUBIECTUL I (20 de puncte) 2b 5x4p.

Subprogramul f este definit alăturat. Indicați un apel în urma căruia în șirul afișat există două valori egale cu 23.

void f(int m, int n) { cout<<(m+n)/2<<' '; | printf("%d ",(m+n)/2); if(m<=n) f(m+1,n-2); }

a. f(20,23); b. f(20,26); c. f(21,25); d. f(21,27);

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I (20 de puncte) 2d 5x4p.

Subprogramul f este definit alăturat. Indicați valoarea lui f(2023).

int f(int n) { if(n==0) return 0; if(n%10==2) return f(n/10)*10+3; return f(n/10)*10+2; }

a. 2303 b. 3232 c. 3332 d. 5355

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: b

SUBIECTUL I (20 de puncte) 2b 5x4p.

Subprogramul f este definit alăturat, iar variabila întreagă r are valoarea 0 înainte de apel. Indicați apelul în urma căruia variabila r are valoarea 2.

void f(int x, int y, int&z) { if((x%2)*(y%2)!=0) z=1; else { f(x/2,y/2,z); z=z+1; } }

a. f(21,22,r); b. f(20,21,r); c. f(19,20,r); d. f(18,19,r);

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: d

SUBIECTUL I 2d 5x4p.

Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte.

Identificatorii utilizați în rezolvări trebuie să respecte precizările din enunț (bold), iar în lipsa unor precizări explicite, notațiile trebuie să corespundă cu semnificațiile asociate acestora (eventual în formă prescurtată). Datele de intrare se consideră corecte, validarea lor nefiind necesară.

Subprogramul f este definit alăturat.

int f(int st,int dr,int v[]) { if(st==dr) if(v[st]==st)return 1; else return 0; else return f(st,(st+dr)/2,v) + f(1+(st+dr)/2,dr,v); }

Știind că variabila x memorează un tablou unidimensional cu elementele (7,1,2,5,4), în această ordine, numerotate de la 0 la 4, indicați valoarea f(0,4,x).

a. 2 b. 3 c. 4 d. 5

Arată baremul

Răspuns: b

SUBIECTUL I 2b 5x4p.

Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte.

Variabila x este declarată alăturat. Indicați secvența care, în urma executării, afișează pe ecran ziua, luna și anul corespunzătoare unei date calendaristice memorate în variabila x.

struct data { int zi, luna, an; }x;

a. cout<<x.zi<<" "<<x.luna<<" "<<x.an; | printf("%d %d %d",x.zi,x.luna,x.an); b. cout<<zi.x<<" "<<luna.x<<" "<<an.x; | printf("%d %d %d",zi.x,luna.x,an.x); c. cout<<x(zi," ",luna," ",an); | printf("%d %d %d",x(zi,luna,an)); d. cout<<data.x.zi<<" "<<data.x.luna<<" "<<data.x.an; | printf("%d %d %d",data.x.zi,data.x.luna,data.x.an);

Pagina din subiect cu figura sau tabelul itemului
Pagina din subiectul oficial.
Arată baremul

Răspuns: a

SUBIECTUL I 2a 5x4p.

Utilizând metoda backtracking se generează toate valorile naturale formate cu cifre ale numărului 289 și care sunt strict mai mici decât acesta. Primele șase numere generate sunt, în această ordine, 2, 22, 222, 228, 229, 28. Indicați al câtelea număr generat este 8. a. al 10-lea b. al 9-lea c. al 8-lea d. al 7-lea

Arată baremul

Răspuns: a

SUBIECTUL I: 2a. 5x4p.

Exersează zilnic cu Academos

Aplicația pentru Evaluarea Națională și Bac. În curând pe:

  • App Store
  • Google Play