Sunteți pe pagina 1din 40

Ministerul Educaţiei și Cercetării

Centrul Naţional de Evaluare şi Examinare

Examenul de bacalaureat naţional 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 1
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Indicați o expresie C/C++ care are valoarea 1 dacă şi numai dacă numărul natural memorat în variabila
întreagă n este divizibil cu 2 şi cu 5.
a. !(n%2==1 || n%5!=0) b. !(n/2==1 && n/5!=0)
c. n%2==0 || !(n%5==0) d. n/2==0 && !(n/5==0)
2. Pentru a verifica dacă în tabloul unidimensional (4,7,9,15,16,20,27) există elementul cu valoarea
x=18 se aplică metoda căutării binare. Succesiunea de elemente a căror valoare se compară cu x pe
parcursul aplicării metodei este:
a. 4,16,20 b. 15,20,16 c. 15,16,20 d. 4,9,16,27
3. Tablourile unidimensionale A şi B au valorile: A=(20,16,10,7,2) și B=(56,15,14,11,1). În urma
interclasării lor în ordine descrescătoare se obţine tabloul cu elementele:
a. (20,15,10,7,1) b. (56,20,16,15,14,10,11,7,2,1)
c. (56,15,14,11,1,20,16,10,7,2) d. (56,20,16,15,14,11,10,7,2,1)
4. O expresie C/C++ care are valoarea 1 este:
a. ceil(20.20)-1==floor(19.20) b. ceil(20.19)==floor(20.20)
c. ceil(20.20)==ceil(19.20) d. floor(20.19)==floor(20.20)
5. În secvenţa de instrucţiuni alăturată, toate variabilele sunt de tip întreg. O m=2020; n=1020;
expresie care poate înlocui punctele de suspensie astfel încât, în urma while (...)
executării secvenţei, variabila m să aibă o valoare egală cu cel mai mare { x=m%n; m=n; n=x;}
divizor comun al numerelor 2020 şi 1020 este: (4p.)
a. m!=0 b. m%n!=0 c. n!=0 d. n!=m

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citeşte n (număr natural)
S-a notat cu a%b restul împărţirii numărului natural a la numărul p1; m0; k0
natural nenul b şi cu [c] partea întreagă a numărului real c. ┌cât timp n≠0 execută
│ citește x (număr natural)
a. Scrieţi valoarea care se afişează în urma executării algoritmului
│┌pentru i1,k execută
dacă se citesc, în această ordine, numerele 12345, 780, 921,
││ x[x/10]
4013, 75, 100214. (6p.)
│└■
b. Dacă pentru n se citește numărul 49, scrieți două seturi de date │┌dacă x≠0 atunci cx%10
care pot fi citite în continuare astfel încât, pentru fiecare dintre ││altfel cn%10
acestea, în urma executării algoritmului, să se afișeze 49. (6p.) │└■
│ mc*p+m
c. Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.) │ n[n/10]
d. Scrieţi în pseudocod un algoritm, echivalent cu cel dat, care să │ pp*10; kk+1
conțină o singură instrucțiune repetitivă. (6p.) └■
scrie m

Probă scrisă la informatică Testul 1


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

2. Variabilele următoare memorează coordonatele reale (abscisa și ordonata), în planul xOy, ale vârfurilor
unui triunghi: tAx și tAy abscisa și respectiv ordonata vârfului A, tBx și tBy abscisa și respectiv
ordonata vârfului B, iar tCx și tCy abscisa și respectiv ordonata vârfului C. Declarați corespunzător
variabilele și scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe ecran pătratul
lungimii laturii AB a triunghiului. (6p.)
3. În secvenţa alăturată, variabila a memorează un caracter, iar k=0;
variabilele i şi k sunt de tip întreg. for(i=1;i<=8;i++)
Scrieţi valoarea variabiei k în urma executării secvenţei știind { cin>>a; | scanf(“%c”,&a);
că se citesc de la tastatură, în această ordine, literele if(a>=’A’ && a<=’Z’) k=k+1;
V I c T o r I E (6p.) else k=k-1;
}

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural n (n≥2) și se cere să se scrie, în această ordine, numerele d și p,
reprezentând divizorul prim, d, care apare la cea mai mare putere, p, în descompunerea în factori primi a lui
n; dacă există mai mulți astfel de divizori se afișează cel mai mare dintre ei.
Scrieţi, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=10780, atunci se scriu numerele 7 2 (10780=2257211). (10p.)
2. Scrieţi un program C/C++ care citeşte de la tastatură două numere naturale din intervalul [2,20], n și
k, şi construieşte în memorie un tablou unidimensional cu n∙k elemente astfel: tabloul memorează un
şir crescător de termeni cu proprietatea că primul termen este k, fiecare valoare apare în şir de exact k
ori și oricare doi termeni alăturați au valori egale sau consecutive. Programul afişează pe ecran tabloul
construit, cu valorile separate prin câte un spaţiu.
Exemplu: dacă n=4 și k=3, se afişează pe ecran tabloul alăturat. 3 3 3 4 4 4 5 5 5 6 6 6
(10p.)
3. Se consideră șirul 1, 1, 2, 5, 14, 41, 122, 365, 1094 ....
definit astfel: f1=f2=1, fn=3∙fn-1-1 (unde n este un număr natural n≥3):
Se citește de la tastatură un număr natural x (x≤109), valoare a unui termen din şirul dat, şi se cere să
se scrie în fişierul text bac.txt, în ordine descrescătoare, separați prin câte un spațiu, toţi termenii
şirului care sunt mai mici sau egali cu x. Proiectați un algoritm eficient din punctul de vedere al
memoriei utilizate şi al timpului de executare.
Exemplu: dacă se citește numărul 365
fişierul bac.txt conţine numerele 365 122 41 14 5 2 1 1
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 1


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

Examenul de bacalaureat naţional 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 2
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Indicați o expresie care are valoarea 1 dacă şi numai dacă numărul memorat în variabila întreagă x
aparţine intervalului închis [-20,20].
a. !(x<-20) || (x>20) b. x>-20 || x<20
c. !(x+20<0 && x-20>0) d. x+20>=0 && x-20<=0
2. Pentru a verifica dacă în tabloul unidimensional (4,5,7,9,10,18,27) există elementul cu valoarea x
se aplică metoda căutării binare. Știind că valoarea x a fost comparată cu trei elemente ale tabloului pe
parcursul aplicării metodei, două valori ale lui x ar putea fi:
a. 3 și 5 b. 4 și 18 c. 9 și 10 d. 27 și 30
3. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona punctată astfel încât, în
urma executării secvenței obținute, să se afișeze pe ecran valorile alăturate.
for(i=0;i<5;i++) 0 1 2 3 4 5 6
{ for(j=0;j<7;j++) 1 2 3 4 5 6 0
cout<<.........<<" "; | printf("%d ",.........); 2 3 4 5 6 0 1
cout<<endl; | printf("\n"); 3 4 5 6 0 1 2
} 4 5 6 0 1 2 3
a. i/10+j/10 b. i%10+j%10 c. (i+j)%7 d. (i+j)/7
4. Variabilele E, x şi y sunt de tip float şi au valori nenule. Instrucţiunea prin care i se 𝐲
𝟐𝟎 +
atribuie variabilei E rezultatul evaluării expresiei alăturate este: 𝐱𝟐
𝟏𝟎
a. E=20+(y/pow(x,2)/10); b. E=(20+y/pow(x,2))/10;
c. E=(20+y)/pow(x,2)/10; d. E=20+y/pow(x,2)/10;
5. O secvenţă de instrucţiuni care realizează corect interschimbarea valorilor variabilelor reale x şi y este:
a. x=y-x; y=y-x; x=x+y; b. x=y-x; y=y-x; x=x-y;
c. x=x-y; y=x-y; x=x+y; d. x=x-y; y=x-y; x=y-x;

Probă scrisă la informatică Testul 2


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citeşte n (număr natural)
S-a notat cu a%b restul împărţirii numărului natural a la numărul m0
natural nenul b şi cu [c] partea întreagă a numărului real c. ┌repetă
│ cn%10; n[n/10]
a. Scrieţi valoarea afişată dacă se citeşte numărul 25940464. (6p.)
│┌dacă c=0 atunci c2
b. Scrieţi trei numere de cinci cifre care pot fi citite astfel încât, pentru fiecare ││altfel
dintre acestea, în urma executării algoritmului să se afișeze 2020. (6p.) ││┌dacă c%2=0 atunci
│││c0
c. Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.) ││└■
d. Scrieţi în pseudocod un algoritm, echivalent cu cel dat, înlocuind adecvat │└■
structura repetă...până când cu o structură repetitivă cu test inițial. │ mm*10+c
(6p.) └până când n=0
scrie m
2. Pentru fiecare dintre cele trei animale dintr-o rezervație se memorează date specifice: un cod,
reprezentând specia, și vârsta. Variabilele cod1 și v1 memorează datele specifice pentru primul animal,
variabilele cod2 și v2 datele specifice pentru cel de al doilea animal, iar variabilele cod3 și v3 datele
specifice ale celui de al treilea animal. Scrieți o secvență de instrucțiuni în urma executării căreia să se
afișeze pe ecran codul celui mai în vârstă animal. (6p.)
3. Tablourile unidimensionale A şi B au valorile: A=(2,5,7,8,10) și B=(23,17,10,9,4). Scrieți
elementele tabloului obținut în urma interclasării tablourilor A și B în ordine descrescătoare, în ordinea
apariției lor în acesta. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Două numere distincte a și b sunt numite d-fii ai unui număr natural n dacă a∙b=n.
Se citește un număr natural, n (n>1), și se cere să se scrie toate perechile distincte de numere naturale cu
proprietatea că sunt d-fii ai lui n. Fiecare pereche este afișată încadrată între paranteze rotunde, numerele
din pereche fiind afișate în ordine strict descrescătoare, separate printr-un spațiu.
Scrieţi, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=12 se scrie, nu neapărat în această ordine, (12 1)(6 2)(4 3)
iar dacă n=16 se scrie (16 1)(8 2) (10p.)

2. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural, n (n[2,102]), apoi cele n
elemente ale unui tablou unidimensional, numere întregi din intervalul [-102,102], dintre care cel puțin
unul este pozitiv și cel puțin unul este negativ. Programul transformă în memorie tabloul, eliminând din
componenţa sa toate numerele negative, apoi afişează pe ecran elementele tabloului obţinut.
Exemplu: pentru n=10 și taboul (2,5,2,4,-3,4,-2,-7,-2,9)
se obține taboul (2,5,2,4,4,9) (10p.)
3. Fişierul bac.in conţine un şir de numere naturale distincte, din intervalul [1,109]. Numerele din şir
sunt separate prin câte un spaţiu şi cel puţin două dintre ele au penultima cifră 2 și ultima cifră 0.
Se cere să se afișeze pe ecran cele mai mari două numere din şir cu proprietatea că au penultima cifră
2 și ultima cifră 0. Numerele determinate sunt afişate în ordine crescătoare, separate prin câte un
spaţiu. Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate şi al timpului de
executare.
Exemplu: dacă fişierul conţine numerele 9731 50 112 20 8 16 8520 3 2520 1520
pe ecran se vor afişa, în această ordine, numerele: 2520 8520
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 2


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

Examenul de bacalaureat naţional 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 3
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Variabilele x și y sunt de tip întreg și memorează numere naturale nenule. Indicaţi o expresie C/C++
care are valoarea 1 dacă şi numai dacă numărul memorat în x are cifra unităţilor egală cu 2 şi este un
multiplu al numărului memorat în y.
a. x%2==10 || y%x==0 b. x%10==2 || y%x==0
c. x%2==10 && x%y==0 d. x%10==2 && x%y==0
2. Pentru a verifica dacă în tabloul unidimensional (49,38,20,18,16,8,4) există elementul cu
valoarea x se aplică metoda căutării binare. Știind că valoarea x a fost comparată cu trei elemente ale
tabloului pe parcursul aplicării metodei, două valori ale lui x ar putea fi:
a. 70 și 18 b. 49 și 16 c. 38 și 2 d. 20 și 8
3. Se consideră două tablouri unidimensionale A şi B: A=(2,3,7,12,16), iar B=(1,4,10,21,25). În
urma interclasării lor în ordine crescătoare se obţine tabloul cu elementele:
a. (1,4,10,21,25,2,3,7,12,16) b. (1,2,3,4,7,10,12,16,21,25)
c. (1,2,3,4,7,10,12,21,16,25) d. (1,3,7,12,16)
4. O expresie C/C++ care are valoarea 1 este:
a. floor(20)+1==ceil(20) b. floor(20.19)==ceil(20.19)
c. floor(20.19)==floor(20.91) d. floor(20.91)==ceil(20.19)
5. Variabilele x, y, z şi w memorează câte un număr real, astfel încât expresia y<w && z<x && w<z
C/C++ alăturată are valoarea 1. Variabila care are ca valoare cel mai mare
dintre numerele menţionate mai sus este:
a. x b. y c. z d. w

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citeşte n (număr natural, n>9)
S-a notat cu a%b restul împărţirii numărului natural a la numărul c1n%10; n[n/10]; c2n%10
natural nenul b şi cu [c] partea întreagă a numărului real c. ┌dacă c1=c2 atunci s0
│altfel
a. Scrieţi ce se afișează dacă se citeşte valoarea 2754578. (6p.)
│┌dacă c1>c2 atunci s1
b. Scrieţi două numere care pot fi citite astfel încât, în urma ││altfel s-1
executării algoritmului pentru primul dintre ele să se afișeze │└■
1 0, iar pentru al doilea să se afișeze -1 0. (6p.) └■
┌repetă
c. Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.) │ c1n%10; n[n/10]; c2n%10
d. Scrieţi în pseudocod un algoritm, echivalent cu cel dat, └până când (c1-c2)*s≤0
înlocuind adecvat structura repetă...până când cu o scrie s,' ',n
structură repetitivă de alt tip. (6p.)

Probă scrisă la informatică Testul 3


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

2. Pentru un cerc se memorează coordonatele reale (abscisa și ordonata), în planul xOy, ale centrului
cercului. Variabilele c1x și c1y memorează coordonatele centrului unui cerc, iar variabilele c2x și c2y
memorează coordonatele centrului unui alt cerc Declarați corespunzător cele patru variabile și scrieți o
secvență de instrucțiuni în urma executării căreia să se afișeze pe ecran, separate printr-un spațiu,
coordonatele cercului care are centrul mai aproape de originea sistemului de coordonate. (6p.)
3. Variabilele a și aux memorează câte un caracter, iar variabilele i şi k sunt de tip întreg. De la tastatură
se citesc numai litere mari ale alfabetului englez. Fără a utiliza alte variabile, scrieţi secvența înlocuind
punctele de suspensie astfel încât, în urma executării secvenţei obținute, variabila k să memoreze
numărul de litere mari citite, cu excepţia vocalei A, dacă în șirul inițial aceasta este alături de vocala I.
Exemplu: dacă se citesc literele A L I A N T A ...........
sau literele A L A I N T A for(i=1;i<=7;i++)
variabila k va memora 6 (pentru literele A L I N T A). { cin>>a; | scanf(“%c”,&a);
(10p.) .................
}

SUBIECTUL al III-lea (30 de puncte)


1. Se citesc două numere naturale nenule, n şi m, și se cere să se scrie numărul valorilor prime care se
regăsesc atât în descompunerea în factori primi a lui n, cât și în descompunerea în factori primi a lui m.
Scrieţi, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=750 şi m=490, atunci se scrie 2 (750=2353, 490=2572). (10p.)
2. Scrieţi un program C/C++ care citeşte de la tastatură două numere naturale, n și k, (n∈[2,20],
k∈[1,n]), şi construieşte în memorie un tablou unidimensional cu n elemente, având proprietăţile:
• al k-lea element are valoarea 0;
• conţine, începând cu al k-lea element, de la dreapta la stânga, un şir strict crescător de numere
consecutive, iar începând cu al k-lea element, de la stânga la dreapta, tot un şir strict crescător de
numere consecutive.
Programul afişează pe ecran tabloul construit, cu elementele separate prin câte un spaţiu.
Exemplu: dacă n=10 și k=3 se afişează pe ecran tabloul 2 1 0 1 2 3 4 5 6 7 (10p.)
3. Fişierul bac.in conţine un şir de cel mult 106 numere întregi din intervalul [-109,109], separate prin
câte un spaţiu. Cel puţin două numere din șir sunt negative.
Se cere să se afişeze pe ecran lungimea maximă a unei secvenţe a şirului care începe şi se încheie cu
câte un număr negativ. O secvenţă este formată din termeni aflaţi pe poziţii consecutive în şir, iar
lungimea secvenței este egală cu numărul de termeni ai acesteia. Proiectați un algoritm eficient din
punctul de vedere al memoriei utilizate şi al timpului de executare.
Exemplu: dacă fişierul conţine numerele 12 25 -6 7 80 -75 101 -6 52 -124 87 99 210
pe ecran se afişează 8 (corespunzător secvenţei -6 7 80 -75 101 -6 52 -124).
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 3


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

Examenul de bacalaureat naţional 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 4
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Variabile x, y şi z sunt de tip întreg. Indicați o expresie C/C++ care are valoarea 1 dacă şi numai dacă
x, y şi z au valori identice.
a. x==y && x==z b. x==y==z
c. !( x!=y && x!=z) d. !(x!=y!=z)
2. Pentru a verifica dacă într-un tablou unidimensional există elementul cu valoarea x=21 se aplică
metoda căutării binare, iar succesiunea de elemente a căror valoare se compară cu x pe parcursul
aplicării metodei este 10, 45, 21. Elementele tabloului pot fi:
a. (2,5,10,21,45,50,70) b. (10,45,21,47,50,55)
c. (2,5,7,10,21,45,70) d. (10,10,45,45,21,21)
3. Tablourile unidimensionale A şi B au valorile: A=(3,5,6,19,20) și B=(56,15,14,11,1). În urma
interclasării lor în ordine crescătoare se obţine tabloul cu elementele:
a. (3,5,6,11,1) b. (3,56,5,15,6,14,11,19,1,20)
c. (1,3,5,6,11,14,15,19,20,56) d. (3,5,6,19,20,56,15,14,11,1)
4. Variabilele x şi y sunt de tip real. Indicaţi instrucţiunea care realizează o prelucrare x=abs(y);
echivalentă cu cea alăturată. (4p.)
a. if(x<0) x=-y; b. if(y<0) x=-y; c. while(y>0) d. while(y>0)
else x=y; else x=y; { x=x*x; y=y-1;} { x=x*y; y=y-1;}
5. Variabilele reale x şi y memorează coordonatele, în planul xOy, ale centrului unui cerc. O expresie
C/C++ care are valoarea 1, dacă şi numai dacă centrul cercului este pe una dintre cele două axe ale
sistemului de coordonate al planului xOy, poate fi:
a. x-y==0 b. x+y==0 c. x/y==0 d. x*y==0

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citeşte n (număr natural)
S-a notat cu a%b restul împărţirii numărului natural a la numărul ┌repetă
natural nenul b şi cu [c] partea întreagă a numărului real c. │ c1n%10; n[n/10]; c2n%10
│┌dacă c1>c2 atunci
a. Scrieţi ce se afișează în urma executării algoritmului dacă se ││ c2c1; c1n%10
citeşte numărul 49335. (6p.) │└■
b. Scrieţi trei numere de patru cifre care pot fi citite astfel încât, │┌cât timp c1<c2 execută
pentru fiecare dintre acestea, în urma executării algoritmului, ││ scrie c1
valoarea afişată să fie 1100. (6p.) ││ c2[c2/2]
│└■
c. Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.) └până când n≤9

d. Scrieţi în pseudocod un algoritm, echivalent cu cel dat, înlocuind adecvat structura


cât timp...execută cu o structură repetitivă de alt tip. (6p.)

Probă scrisă la informatică Testul 4


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

2. Variabilele nrv1 și lgm1 memorează numărul de vârfuri și lungimea muchiei pentru un poliedru regulat,
iar variabilele nrv2 și lgm2 memorează numărul de vârfuri și lungimea muchiei pentru un alt poliedru
regulat. Știind că numărul de vârfuri este un număr natural, iar lungimea muchiei este un număr real,
declarați corespunzător variabilele și scrieți o secvență de instrucțiuni în urma executării căreia să se
afișeze pe ecran, separate printr-un spațiu, lungimile muchiilor celor două poliedre, astfel încât cea care
corespunde poliedrului cu mai multe vârfuri să apară prima. (6p.)
3. Variabila a memorează un caracter, iar variabilele i şi k sunt de tip întreg. De la tastatură se citesc
numai litere mici ale alfabetului englez.
Fără a utiliza alte variabile, scrieţi secvența înlocuind punctele ...........
de suspensie astfel încât, în urma executării secvenţei for(i=1;i<=11;i++)
obținute, variabila k să memoreze valoarea 1 dacă s-a citit cel { cin>>a; | scanf(“%c”,&a);
puțin o consoană, și valoarea 0 altfel. .................
Exemplu: dacă se citesc literele }
o p t s p r e z e c e
variabila k va memora 1. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Două numere a și b sunt numite generatoare ale unui număr natural n dacă a∙b+[a/b]=n, unde s-a notat
cu [c] partea întreagă a numărului real c.
Se citește un număr natural n (n≥2) și se cere să se afișeze pe ecran toate perechile distincte de numere
naturale cu proprietatea că sunt generatoare ale lui n și că primul număr din pereche este par. Numerele din
fiecare pereche sunt separate prin simbolul minus (-), iar perechile sunt separate prin câte un spațiu. Dacă
nu există astfel de perechi, se scrie mesajul nu exista. Scrieţi, în pseudocod, algoritmul de rezolvare a
problemei enunțate.
Exemplu: dacă n=2020 se afișează pe ecran
2-1010 4-505 10-202 20-101 96-21 200-10 606-3 808-2 1010-1 (10p.)
2. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural, n (n [2,20]), şi cele n elemente
ale unui tablou unidimensional, numere naturale din mulţimea {0,1}. Programul afişează pe ecran numărul
de perechi de elemente egal depărtate de extremitățile tabloului care sunt complementare. Două elemente
sunt complementare dacă suma lor este 1: 0 este complementar lui 1 și 1 este complementar lui 0.
Exemplu: dacă n=10, și tabloul (1,0,1,1,0,0,0,1,1,1), se afişează pe ecran 2. (10p.)
3. Fişierul bac.txt conţine, în ordine descrescătoare, cel puţin două şi cel mult 106 numere naturale
din intervalul [0,109], separate prin câte un spaţiu. Se cere să se afişeze pe ecran, în ordine strict
descrescătoare, separate prin câte un spaţiu, numai numerele care apar în fişier o singură dată. Dacă
nu există niciun astfel de număr, se afișează pe ecran mesajul nu exista. Proiectați un algoritm
eficient din punctul de vedere al memoriei utilizate şi al timpului de executare.
Exemplu: dacă fişierul conţine numerele 100 100 50 50 50 49 16 12 12 12 10 9 9 7
pe ecran se afişează, în această ordine, numerele 49 16 10 7
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 4


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educaţiei și Cercetării
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 5
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Indicați o expresie C/C++ care are valoarea 1 dacă și numai dacă numărul natural memorat în variabila
întreagă x are exact o cifră.
a. x/10==0 b. x%10==0
c. (x/10)/10==0 d. (x%10)%10==0
2. Pentru a verifica dacă în tabloul unidimensional (2,5,7,9,10,16,21) există elementul cu valoarea
x=6 se aplică metoda căutării binare. Succesiunea de elemente a căror valoare se compară cu x pe
parcursul aplicării metodei este:
a. 2,5,7 b. 9,5,7 c. 2,10,16 d. 9,7,5
3. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona ( ( ( ) ) )
punctată astfel încât, în urma executării secvenței obținute, să se afișeze pe ecran * ( ( ) ) *
simbolurile alăturate. * * ( ) * *
for(i=0;i<6;i++) * * ( ) * *
{ for(j=0;j<6;j++) * ( ( ) ) *
if(............) cout<<"* "; | printf("*"); ( ( ( ) ) )
else if(j<3) cout<<"( "; | printf("( ");
else cout<<") "; | printf("( ");
cout<<endl; | printf("\n");
}
a. (i<j || i+j>5) && (i>j || i+j<5) b. (i<j || i+j>5) || (i>j || i+j<5)
c. (i<j && i+j>5) && (i>j && i+j<5) d. (i<j && i+j>5) || (i>j && i+j<5)
4. O expresie C/C++ care are valoarea 1 este:
a. 20.20<floor(20.20) && 20.20>1+floor(20.20)
b. 20.20>=floor(20.20) && 20.20<1+floor(20.20)
c. 20.20<=floor(20.20) && 20.20+1==floor(20.20)
d. 20.20>floor(20.20) && 20.20-1==floor(20.20)
5. Variabilele x și y sunt de tip întreg și memorează numere naturale, iar x are o y=0;
valoare nenulă. Indicați expresia care poate înlocui punctele de suspensie astfel while(x>=2020)
încât, în urma executării secvenței obținute, variabila y să memoreze câtul { y=y+1;
împărțirii la 2020 a numărului memorat inițial în variabila x. x=.........;
}
a. x-1 b. x+1 c. x-2020 d. x+2020

Probă scrisă la informatică Testul 5


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Național de Evaluare și Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește n
S-a notat cu a%b restul împărţirii numărului natural a la numărul (număr natural nenul)
natural nenul b şi cu [c] partea întreagă a numărului real c. x1; yn; d2
┌cât timp x<y execută
a. Scrieți ce se afișează dacă se citește numărul 100. (6p.) │┌dacă n%d=0 atunci
b. Scrieți toate numerele din intervalul [1,9] care pot fi citite astfel ││ xd
încât, pentru fiecare dintre acestea, în urma executării algoritmului, ││ y[n/d]
să se afișeze N. (6p.) │└■
│ dd+1
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.) └■
d. Scrieți în pseudocod un algoritm echivalent cu cel dat, care să nu ┌dacă x=y atunci
cuprindă nicio structură repetitivă. (6p.) │ scrie 'D',x
│altfel scrie 'N'
└■
2. Variabilele reale real1 și imaginar1 memorează partea reală și partea imaginară a unui număr
complex, iar variabilele reale real2 și imaginar2 memorează partea reală și partea imaginară a unui
alt număr complex. Declarați corespunzător variabilele și scrieți o secvență de instrucțiuni în urma
executării căreia să se afișeze pe ecran, separate printr-un spațiu, partea reală și partea imaginară a
numărului care are modulul cel mai mare. (6p.)
3. Știind că unul dintre cele trei elemente ale tabloului A are valoarea 49 și două dintre elementele
tabloului B au valorile 16, respectiv 100, scrieți câte un exemplu de valori pentru elementele tabloului A,
respectiv ale tabloului B, în ordinea în care ele pot apărea în fiecare tablou, astfel încât, prin metoda
interclasării acestora, să se obțină tabloul unidimensional (7,9,12,16,17,49,100). (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Un număr este scris în baza de numerație b (b≤10) dacă cifrele sale aparțin intervalului [0,b-1].
Se citește un număr natural, n, și se cere să se afișeze cea mai mică bază din intervalul [2,10] căreia
i-ar putea corespunde scrierea lui n. Scrieţi, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=50731, se scrie 8. (10p.)
2. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural, n (n [2,20]), şi cele n
elemente ale unui tablou unidimensional, numere naturale din intervalul [0,109). Programul afişează
pe ecran numărul de valori care sunt divizibile cu 20.
Exemplu: pentru n=10 și tabloul (10, 200, 25, 40, 50, 80,400,120,100,5)
se afișează pe ecran 6 (10p.)
3. Fișierul bac.txt conține un șir de cel mult 106 numere întregi din intervalul [-103,103], separate prin
câte un spațiu. Se cere să se afișeze pe ecran suma maximă obținută adunând numere pozitive de pe
poziții consecutive în șirul aflat în fișier. Proiectați un algoritm eficient din punctul de vedere al memoriei
utilizate și al timpului de executare.
Exemplu: dacă fișierul bac.txt conține valorile 4 -6 7 2 1 4 -10 -3 9 2 -2 1 1 1 1 1 3
se afișează pe ecran numărul 14
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 5


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației Naționale
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 6
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Expresia C/C++
(x>=18) && !( x<19 || x>20) && (x<=21)
are valoarea 1 dacă și numai dacă valoarea memorată de variabila întreagă x aparține intervalului:
a. [18,20] b. [18,21] c. [19,20] d. [19,21]
2. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona punctată astfel încât, în
urma executării secvenței obținute, să se afișeze pe ecran valorile alăturate.
for(i=0;i<4;i++) 16 17 18 19 20
{ for(j=0;j<5;j++) 11 12 13 14 15
cout<<.........<<" "; | printf("%d ",.........); 6 7 8 9 10
cout<<endl; | printf("\n"); 1 2 3 4 5
}
a. 16-4*i+j b. 16-5*i+j c. 11-4*i+j d. 11-5*i+j
3. Se consideră două tablouri unidimensionale A și B: A=(45,21,14,8,2), iar B=(65,16,10,5,1). În
urma interclasării lor în ordine descrescătoare se obține tabloul cu elementele:
a. (65,21,14,8,2) b. (65,45,16,21,10,14,5,8,1,2)
c. (65,45,21,16,14,10,8,5,2,1) d. (65,45,21,14,16,10,8,5,2,1)

4. Variabilele E, x, y și z sunt de tip real și au valori nenule. Indicați E=x/(2019+z)*pow(2020,2);


expresia prin a cărei evaluare se obține valoarea atribuită
variabilei E prin instrucțiunea alăturată.
a. 𝐱+z b. 𝐱 c. 𝐱 z 𝟐 d. 𝐱
+( ) ∙ 2020𝟐
2019 ∙ 2020 𝟐 (2019+z) ∙ √2020 2019 2020 2019+z

5. Variabilele x, y, z și w memorează câte un număr real distinct. Indicați o expresie C/C++ care, dacă are
valoarea 1, atunci variabila x memorează cel mai mare dintre celelalte trei numere precizate.
a. y<x && z<w && z<y b. z<w && w<x && z<y
c. y<x && z<w && w<y d. z<w && z<x && y<w

Probă scrisă la informatică Testul 6


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației Naționale
Centrul Național de Evaluare și Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește n (număr natural nenul)
nr0; i1
a. Scrieți numărul afișat în urma executării algoritmului dacă pentru
┌cât timp i≤n execută
n se citește valoarea 7. (6p.)
│ x0; y1; j1
b. Scrieți două numere din intervalul [10,102) care pot fi citite │ ┌cât timp j<i execută
astfel încât, pentru fiecare dintre acestea, în urma executării │ │ r2*x-y; xy; yr
algoritmului, să se afișeze 10. (6p.) │ │ jj+1
│ └■
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.) │ ii+1
│ ┌dacă y>0 atunci
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind │ │ nrnr+1
adecvat una dintre structurile cât timp...execută cu o │ └■
structură repetitivă de tip pentru...execută . (6p.) └■
scrie nr

2. Pentru un punct se memorează coordonatele (abscisa și ordonata) în sistemul de coordonate xOy.


Variabilele Ax și Ay, de tip întreg, memorează abscisa, respectiv ordonata punctului A, iar variabilele
Bx și By, de tip întreg, memorează abscisa, respectiv ordonata punctului B. Declarați variabilele și
scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe ecran mesajul
intersecteaza axa, dacă segmentul cu extremitățile în punctele A și B intersectează axa Oy a
sistemului de coordonate, sau mesajul nu intersecteaza axa, în caz contrar. (6p.)

3. Pentru a verifica dacă în tabloul unidimensional (3,7,8,12,16,23,47) există elementul cu valoarea


x=16 se aplică metoda căutării binare. Scrieți succesiunea de elemente a căror valoare se compară cu
x pe parcursul aplicării metodei. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural n (n≥2) și se cere să se scrie produsul divizorilor primi ai lui n.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=2000, se scrie 10, deoarece 2000=2453. (10p.)

2. Scrieți un program C/C++ care citește de la tastatură un număr natural n (n[2,20]) și cele n
elemente ale unui tablou unidimensional, numere naturale din intervalul [1,109]. Elementele tabloului
sunt numerotate începând cu 1. Programul afișează pe ecran toate elementele tabloului cu proprietatea
că sunt strict mai mici decât valoarea cu care sunt numerotate. Numerele afișate sunt separate prin câte
un spațiu, iar dacă nu există niciun astfel de număr, se afișează pe ecran mesajul nu exista.
Exemplu: pentru n=8 și tabloul (2,2,1,9,4,16,4,3)
se afișează pe ecran, nu neapărat în această ordine, numerele 1 4 4 3. (10p.)

3. Se citesc de la tastatură două numere naturale din intervalul [1,81], p1 și p2, și se cere scrierea în
fișierul bac.out a tuturor numerelor naturale cu exact 7 cifre, pentru care produsul primelor două cifre
este egal cu p1, cele trei cifre din mijloc sunt 0, iar produsul ultimelor două cifre este egal cu p2.
Numerele apar în fișier în ordine strict descrescătoare, fiecare pe câte o linie. Proiectați un algoritm
eficient din punctul de vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă p1=12, iar p2=8, atunci 2600024 și 3400018 sunt două dintre cele 16 numere cu
proprietatea cerută (2∙6=3∙4=12 și 2∙4=1∙8=8).
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 6


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației și Cercetării
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 7
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Expresia C/C++
!(x<2001) && (x<=2002) || (x>=2019) && !(x>2020)
are valoarea 1 dacă și numai dacă valoarea memorată de variabila reală x aparține reuniunii:
a. {2001}  [2002,2019]  {2020} b. [2001,2002]  {2019}  {2020}
c. [2001,2002]  {2019,2020} d. [2001,2002]  [2019,2020]

2. Pentru a verifica dacă în tabloul unidimensional (2,4,7,8,14,17,30) există elementul cu valoarea x


se aplică metoda căutării binare. Știind că valoarea x a fost comparată cu două elemente ale tabloului
pe parcursul aplicării metodei, două valori ale lui x ar putea fi:
a. 4, 17 b. 7, 14 c. 2, 30 d. 2, 4

3. Tabloul unidimensional A este (2,6,7,10,16), iar în urma interclasării lui în ordine crescătoare cu
tabloul B se obține tabloul (2,5,6,7,9,10,16,16,27,49). Indicați elementele tabloului B, în ordinea
apariției lor în acesta.
a. (2,6,7,10,16,5,9,16,27,49) b. (2,3,6,3,7,9,10,17,16,33)
c. (49,27,16,9,5) d. (33,17,9,3,3)

4. Variabilele x, y și i sunt de tip întreg și au valori nenule. Indicați instrucțiunea x=floor(y/2020);


care realizează o prelucrare echivalentă cu cea alăturată.
a. x=2020/y; b. x=y/2020; c. x=y; d. x=2020;
for(i=2;i<=2020;i++) for(i=2;i<=y;i++)
x=x*y; x=x*2020;

5. Indicați o secvență de instrucțiuni care realizează interschimbarea valorilor variabilelor întregi x și y.


a. x=x-y; y=x-y; x=x-y; b. x=x+y; y=x+y; x=x+y;
c. x=x+y; y=x-y; x=x-y; d. x=x-y; y=x+y; x=x+y;

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește n
S-a notat cu a%b restul împărțirii numărului natural a la numărul natural (număr natural nenul)
nenul b și cu [c] partea întreagă a numărului real c. x1; m0; p1
┌cât timp x<10 execută
a. Scrieți ce se afișează dacă se citește numărul 253387. (6p.) │ cnn
│┌cât timp cn≠0 execută
b. Scrieți cel mai mic și cel mai mare număr din intervalul [10,102) ││ ccn%10; cn[cn/10]
care pot fi citite astfel încât, pentru fiecare dintre acestea, în urma ││┌dacă c=x atunci
executării algoritmului, să se afișeze 0. (6p.) │││ mc*p+m; pp*10
││└■
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.) │└■
d. Scrieți în pseudocod un algoritm echivalent cu cel dat, înlocuind │ xx+2
adecvat prima structură repetitivă cu o structură repetitivă de alt tip. └■
(6p.) scrie m

Probă scrisă la informatică Testul 7


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației și Cercetării
Centrul Național de Evaluare și Examinare

2. Pentru o carte dintr-o bibliotecă se memorează numărul de inventar (număr natural cu cel mult cinci
cifre) și prețul cărții (număr real). Variabilele inv1 și pret1 memorează numărul de inventar și prețul
unei cărți, iar variabilele inv2 și pret2 memorează numărul de inventar și prețul unei alte cărți.
Declarați variabilele pret1 și pret2 și scrieți o secvență de instrucțiuni în urma executării căreia să se
afișeze pe ecran, separate printr-un spațiu, numărul de inventar al cărții cu prețul mai mic, urmat de
media prețurilor celor două cărți. (6p.)

3. Toate variabilele din c1='s';c5='o';c6='u';


secvența alăturată sunt de cout<<c5<<c6<<endl; | printf("%c%c\n",c5,c6);
tip char. Scrieți ce se c1=c1-1; c2=c1-3;
afișează în urma c3=c1+1; c4=c1+3;
executării secvenței. (6p.) cout<<c1<<c2<<c3<<c4; | printf("%c%c%c%c",c1,c2,c3,c4);

SUBIECTUL al III-lea (30 de puncte)


1. Se citesc două numere naturale, n (n≥2) și p și se cere să se scrie puterea la care apare numărul p în
descompunerea în factori primi a lui n dacă p este număr prim, sau valoarea -1 în caz contrar.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=80 și p=2, se scrie numărul 4 (80=245). (10p.)

2. O valoare k polarizează un șir dacă există doi termeni ai șirului care au acea valoare, unul fiind în prima
jumătate a șirului, iar celălalt în a doua jumătate a șirului.
Scrieți un program C/C++ care citește de la tastatură numere naturale din intervalul [1,20]: n și un șir
de 2∙n numere, elemente ale unui tablou unidimensional, cu proprietatea că atât primele n, cât și
ultimele n sunt distincte. Programul afișează pe ecran valorile care pot polariza șirul citit.
Valorile sunt afișate într-o ordine oarecare, separate prin câte un spațiu, iar dacă nu există astfel de
valori se afișează pe ecran mesajul nepolarizat.
Exemplu: pentru n=4 și tabloul (3,2,6,5,5,1,6,8) se afișează pe ecran, nu neapărat în această
ordine, numerele 5 6 (10p.)

3. Fișierul bac.txt conține un șir de cel mult 106 numere întregi din intervalul [-103,103], separate prin
câte un spațiu. Se cere să se afișeze pe ecran suma minimă obținută adunând numere negative de pe
poziții consecutive în șirul aflat în fișier. Proiectați un algoritm eficient din punctul de vedere al memoriei
utilizate și al timpului de executare.
Exemplu: dacă fișierul bac.txt conține valorile -4 6 -7 -2 -1 -4 10 3 -9 -2 2
se afișează pe ecran numărul -14
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 7


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației și Cercetării
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 8
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Indicați o expresie C/C++ care are valoarea 1 dacă și numai dacă numărul memorat în variabila
întreagă x aparține reuniunii de intervale [-2020,-2019][2019,2020].
a. x>=-2020 && x<=-2019 && x>=2019 && x<=2020
b. !(x<-2020 || x>-2019) || !(x<2019 || x>2020)
c. x>=-2020 || x<=-2019 || x>=2019 || x<=2020
d. !(x<-2020 && x>2020 && x>-2019 || x<2019)

2. Pentru a verifica dacă în tabloul unidimensional (70,64,24,14,12,8,2) există elementul cu


valoarea x se aplică metoda căutării binare. Știind că valoarea x a fost comparată cu un singur element
al tabloului pe parcursul aplicării metodei, x ar putea fi:
a. 70 b. 14 c. 64 sau 2 d. 8 sau 2

3. Tablourile unidimensionale A și B au elementele: A=(1,3,6,17,18), iar B=(2,9,10,21,49). În


urma interclasării lor în ordine crescătoare se obține tabloul cu elementele:
a. (1,2,3,6,9,10,17,18,21,49) b. (1,2,3,9,6,10,17,21,18,49)
c. (1,3,6,17,18,2,9,10,21,49) d. (3,12,16,38,67)

4. Indicați o expresie C/C++ care are valoarea 1.


a. floor(20.02*100)==ceil(20.20)*100 b. floor(20.02)==ceil(2.020)*10
c. floor(20.02)==floor(2.020)*10 d. floor(20.20)/10==ceil(2.002)
5. Variabilele x, y, z, w și r sunt de tip întreg, iar r memorează inițial valoarea 0. Indicați o secvență
echivalentă cu cea de mai jos.
if (x==y){ r=1; if(z==w) r=2; } else r=3;
a. if (x==y || z!=w) r=1; else if(x!=y || z==w) r=2; else if(x!=y) r=3;
b. if (x==y || z!=w) r=1; else if(x==y || z==w) r=2; else r=3;
c. if (x==y && z!=w) r=1; else if(x!=y && z==w) r=2; else if(x!=y) r=3;
d. if (x==y && z!=w) r=1; else if(x==y && z==w) r=2; else r=3;

Probă scrisă la informatică Testul 8


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației și Cercetării
Centrul Național de Evaluare și Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește x,y
S-a notat cu a%b restul împărțirii numărului natural a la numărul natural (numere naturale)
nenul b și cu [c] partea întreagă a numărului real c. ┌repetă
│ cx%10
a. Scrieți valoarea afișată dacă se citesc, în această ordine, numerele │ x[x/10]
201920 și 20. (6p.) │┌dacă c≠0 atunci
││┌dacă y%10<c atunci
b. Dacă numărul citit pentru y este 0, scrieți două numere din intervalul │││ yy*10+c
[102,103) care pot fi citite pentru x, astfel încât, pentru fiecare dintre │││altfel
acestea, în urma executării algoritmului, numărul afișat să fie 9. (6p.) │││ yy*10-c
││└■
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.) │└■
└până când x=0
d. Scrieți în pseudocod un algoritm echivalent cu cel dat, înlocuind structura
scrie y
repetă...până când cu o structură repetitivă cu test inițial. (6p.)

2. Despre un elev se memorează în variabila nrm numărul matricol (număr natural cu cel mult 3 cifre), iar
în variabilele nota1 și nota2 câte o notă, număr natural din intervalul [1,10]. Scrieți o secvență de
instrucțiuni în urma executării căreia să se afișeze pe ecran media celor două note, cu două zecimale
exacte, urmate, pe rândul următor, de numărul matricol al elevului menționat. (6p.)

3. Variabila i este de tip întreg, iar c1='s';c2='o';c3='u';


celelalte variabile sunt de tip char. cout<<c2<<c3<<endl; | printf("%c%c\n",c2,c3);
Scrieți ce se afișează în urma for(i=0;i<4;i++)
executării secvenței alăturate. (6p.) { if(i%2==0)
{ c=c1+i-1;
if(i==0) c1=c;
}
else c=c1+3*(2*i/3-1);
cout<<c; | printf("%c",c);
}

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural, n (n≥2) și se cere să se scrie suma divizorilor primi ai lui n.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: pentru n=12 se scrie 5 (divizorii primi ai lui 12 sunt 2 și 3). (10p.)

2. Scrieți un program C/C++ care citește de la tastatură numere naturale: n (n[2,20]), k (k[1,n]) și
cele n elemente ale unui tablou unidimensional, numere din intervalul [0,109]. Programul transformă
tabloul în memorie, deplasând circular spre stânga, cu câte o poziție, primele k elemente, ca în
exemplu. Elementele tabloului obținut sunt afișate pe ecran, separate prin câte un spațiu.
Exemplu: pentru n=7, k=4 și tabloul (1,3,5,7,9,5,8) se obține tabloul (3,5,7,1,9,5,8). (10p.)
3. Fișierul bac.in conține un șir de cel mult 106 numere naturale din intervalul [0,109], separate prin
câte un spațiu. Se cere să se afișeze pe ecran cifrele cu proprietatea că în șir se află un număr maxim
de termeni care au cifra unităților egală cu acestea. Cifrele afișate sunt separate prin câte un spațiu.
Proiectați un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul bac.in conține numerele 112 12 5 25 88 15 2 19 32 179 35 621
pe ecran se afișează cifrele de mai jos (sunt câte 4 termeni care au cifra unităților 2, respectiv 5):
2 5
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 8


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației și Cercetării
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 9
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Variabila x este de tip întreg și memorează un număr nenul. Indicați expresia C/C++ cu valoarea 1 dacă
2020 este divizor al lui x.
a. x/(x/2020)==0 b. x/(x%2020)==0 c. x%(x%2020)==0 d. x%(x/2020)==0
2. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona punctată astfel încât, în
urma executării secvenței obținute, să se afișeze pe ecran valorile alăturate.
for(i=0;i<6;i++) 0 0 0 0 0 0
{ for(j=0;j<6;j++) 0 2 2 4 4 6
cout<<.........<<" "; | printf("%d ",.........); 0 2 0 2 0 2
cout<<endl; | printf("\n"); 0 4 2 6 4 8
} 0 4 0 4 0 4
0 6 2 8 4 10
a. (i/2)*j+(j/2)*i b. (i%2)*j+(j%2)*i c. (i/2)*i+(j/2)*j d. (i%2)*i+(j%2)*j

3. Pentru a verifica dacă într-un tablou unidimensional există elementul cu valoarea x=19 se aplică
metoda căutării binare, iar succesiunea de elemente a căror valoare se compară cu x pe parcursul
aplicării metodei este 8, 20, 19. Elementele tabloului pot fi:
a. (4,8,10,20,15,19,70) b. (8,20,19,47,50,70)
c. (2,5,7,8,19,20,70) d. (8,8,20,20,19,19)

4. O expresie C/C++ care are valoarea 1 este:


a. ceil(20)-1==floor(20) b. ceil(20.91)==floor(20.19)
c. ceil(20.19)==ceil(20.91) d. ceil(20.19)==floor(20.91)
5. Variabilele x, y, z, w și r sunt de tip întreg, iar r are inițial valoarea 0. Indicați o secvență echivalentă
cu cea de mai jos.
if (x==y) if(z==w) r=1; else r=2; else r=3;
a. if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else r=3;
b. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else r=3;
c. if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else if(x!=y && z!=w) r=3;
d. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else if(x!=y || z!=w) r=3;

Probă scrisă la informatică Testul 9


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației și Cercetării
Centrul Național de Evaluare și Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește n,k
S-a notat cu a%b restul împărțirii numărului natural a la numărul (numere naturale nenule)
natural nenul b și cu [c] partea întreagă a numărului real c. t1
┌pentru i1,[n/k] execută
a. Scrieți ce se afișează dacă se citesc, în această ordine, │┌pentru j1,k execută
numerele 8 și 3. (6p.) ││ scrie t,' '
│└■
b. Dacă pentru variabila k se citește valoarea 5, scrieți cea mai │ tt+1
mică și cea mai mare valoare care pot fi citite pentru variabila └■
n astfel încât, pentru fiecare dintre acestea, în urma executării ┌pentru in%k,1,-1 execută
algoritmului, ultimul număr afișat să fie 10. (6p.) │ scrie t,' '
└■
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.)

d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind adecvat ultima structură
pentru...execută cu o structură repetitivă de alt tip. (6p.)

2. În secvența alăturată, variabila c este de tip char, iar variabilele i și k sunt de tip întreg.
Scrieți secvența alăturată, înlocuind punctele de suspensie astfel încât, în urma executării secvenței
obținute, valoarea variabilei k să fie egală cu numărul de litere i citite.
Exemplu: dacă se citesc literele k=........
i m p o n d e r a b i l i t a t e for (i=1;i<=17;i++)
variabila k este 3 (6p.) { cin>>c; | scanf(”%c”,&c);
.....
}

3. Tablourile unidimensionale A și B au valorile: A=(3,5,6,19,20) și B=(56,15,14,11,1). Scrieți


elementele tabloului obținut în urma interclasării lor în ordine crescătoare. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural, n, și se cere să se scrie suma cifrelor impare distincte din scrierea acestuia.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=4713835, se scrie 16 (16=7+1+3+5), iar dacă n=48, se scrie 0. (10p.)

2. Scrieți un program C/C++ care citește de la tastatură un număr natural n (n[2,20]) și un șir de n
numere naturale din intervalul [1,109], elemente ale unui tablou unidimensional. Programul afișează
pe ecran, separate prin câte un spațiu, numerele din șir care sunt strict mai mari decât ultimul număr
citit. Dacă nu există astfel de numere, se afișează pe ecran mesajul nu exista.
Exemplu: pentru n=6 și tabloul (20,102,30,50,2101,40), pe ecran se afișează
102 50 2101 (10p.)
3. Numim k-secvență într-un șir de numere naturale, o succesiune de termeni aflați pe poziții consecutive
în șir, cu proprietatea că sunt divizibili cu numărul natural nenul k. Lungimea secvenței este egală cu
numărul de termeni ai săi.
Fișierul bac.txt conține numere naturale din intervalul [0,109]: pe prima linie un număr nenul k, iar
pe a doua linie un șir de cel mult 106 numere, separate prin câte un spațiu. Cel puțin un termen din șir
este divizibil cu k. Se cere să se afișeze pe ecran lungimea maximă a unei k-secvențe din șirul aflat în
fișier. Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate și al timpului de
executare.
Exemplu: dacă fișierul are conținutul alăturat, 5
se afișează 4 2 10 5 20 21 0 10 60 15 3 9 20 20 5 45
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 9


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației și Cercetării
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 10
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.
SUBIECTUL I (20 de puncte)
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.
1. Variabila x este de tip întreg și memorează un număr nenul. Indicați expresia C/C++ cu valoarea 1
dacă 20 este multiplu al lui x.
a. 20/(20/x)==0 b. 20/(20%x)==0 c. 20%(20%x)==0 d. 20%(20/x)==0
2. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona punctată astfel încât, în
urma executării secvenței obținute, să se afișeze pe ecran valorile alăturate.
for(i=0;i<4;i++) 5 4 3 2 1
{ for(j=0;j<5;j++) 10 9 8 7 6
cout<<.........<<" "; | printf("%d ",.........); 15 14 13 12 11
cout<<endl; | printf("\n"); 20 19 18 17 16
}
a. 5*i-j b. i+5*j c. 5*(i+1)-j d. i+5*(j+1)

3. Pentru a verifica dacă în tabloul unidimensional (1,3,8,14,16,19,32) există elementul cu valoarea


x=20 se aplică metoda căutării binare. Indicați succesiunea de elemente a căror valoare se compară cu
x pe parcursul aplicării metodei.
a. 14,19,32 b. 8,14,16,32 c. 3,14,19 d. 1,32,3,19

4. Variabilele x și y sunt de tip real. Indicați instrucțiunea care y=x;


realizează o prelucrare echivalentă cu cea alăturată. if(y<0) y=-y;
a. x=abs(y); b. y=abs(x); c. x=floor(y); d. y=floor(x);

5. În secvența de instrucțiuni alăturată, toate variabilele sunt întregi. Indicați o x=2020; y=50;
expresie care poate înlocui punctele de suspensie astfel încât, în urma while (...)
executării secvenței obținute, variabila x să aibă o valoare egală cu cel mai { if(x>y) x=x-y;
else y=y-x;
mare divizor comun al numerelor 50 și 2020.
}
a. x-y!=0 b. x+y!=0 c. x/y!=0 d. x%y!=0

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește x,y
S-a notat cu a%b restul împărțirii numărului natural a la numărul (numere naturale nenule)
natural nenul b și cu a→b operația prin care se interschimbă ┌dacă x>y atunci
valorile variabilelor a și b. | x→y
└■
a. Scrieți ce se afișează în urma executării algoritmului dacă se ix; jy; s0
citesc, în această ordine, numerele 16 și 7. (6p.) ┌repetă
b. Dacă pentru x se citește numărul 10, scrieți două valori care pot fi | ss+(i%2)*j+(j%2)*i
citite pentru variabila y astfel încât, pentru fiecare dintre acestea, │ ii+1; jj-1
└până când i>j
în urma executării algoritmului, să se afișeze numărul 90. (6p.)
scrie s
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.)
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind adecvat structura repetă...până când
cu o structură repetitivă cu test inițial. (6p.)
Probă scrisă la informatică Testul 10
Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației și Cercetării
Centrul Național de Evaluare și Examinare

2. Variabila luna memorează luna în care va avea loc premiera unui spectacol (număr natural din
intervalul [1,12]), iar variabila varsta memorează vârsta actorului din rolul principal, în ani împliniți,
la data de 1 martie 2020. Scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe
ecran anul nașterii actorului, știind că în anul 2021, în ziua premierei spectacolului, va împlini 20 de ani.
(6p.)

3. Variabilele x și y sunt de tip char, iar celelalte k='A'-'a'; x='e';


for(i=0;i<2;i++)
variabile sunt de tip întreg. Scrieți ce se afișează
{ y=x+k+1;
în urma executării secvenței date.
cout<<x<<y; | printf(”%c%c”,x,y);
(6p.) x=x-1;
}

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural, n, și se cere să se scrie produsul cifrelor pare distincte din scrierea
acestuia, sau -1 dacă nu există astfel de cifre.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=1622325, se scrie 12 (12=6∙2), iar dacă n=122325, se scrie 2. (10p.)

2. Scrieți un program C/C++ care citește de la tastatură numere naturale: n (n[2,20]) și cele n
elemente ale unui tablou unidimensional, numere din intervalul [0,109]. Programul transformă tabloul
în memorie, inserând numărul 2020 între oricare două elemente cu aceeași paritate din șirul citit.
Elementele tabloului obținut sunt afișate pe ecran, separate prin câte un spațiu, iar dacă nu există
perechi de astfel de elemente, se afișează pe ecran mesajul nu exista.
Exemplu: pentru n=8 și tabloul (1,3,5,8,16,35,8,20)
se obține tabloul (1,2020,3,2020,5,8,2020,16,35,8,2020,20). (10p.)
3. Un șir format din cel puțin trei termeni formează o progresie aritmetică de rație r dacă diferența dintre
oricare termen al acestuia și cel aflat pe poziția consecutivă în șir este egală cu r.
Fișierul text bac.txt conține un șir de cel puțin trei și cel mult 106 numere întregi din intervalul
[-108,108]. Numerele sunt separate prin câte un spațiu. Se cere să se afișeze pe ecran numărul
maxim de termeni ai unei secvențe din șir, secvență care formează o progresie aritmetică de rație 1.
Dacă nu există nicio astfel de secvență, se afișează pe ecran mesajul nu exista. Proiectați un
algoritm eficient din punctul de vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă fișierul conține numerele 4 5 6 7 18 20 22 24 26 28 2 3 4 5 6
pe ecran se afișează valoarea 5 (corespunzătoare secvenței 2 3 4 5 6).
a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)

Probă scrisă la informatică Testul 10


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației Naționale
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 11
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Variabilele x şi y sunt întregi și memorează câte un număr natural. Indicați o expresie C/C++ care are
valoarea 1 dacă şi numai dacă numărul memorat în x aparține intervalului [0,2019], iar numărul
memorat în y aparține intervalului [2019,2020].
a. x<=2019 || y==2019 && y==2020 b. x<=2019 && y==2019 || y==2020
c. !(x>2019 || y!=2019) && !(y>2020) d. !(x>2019) && !(y<2019 || y>2020)

2. Tablourile unidimensionale A și B au elementele: A=(2,20,27,36,50), iar B=(3,5,8,45,63). În


urma interclasării lor în ordine crescătoare se obține tabloul cu elementele:
a. (2,5,8,36,50) b. (2,3,5,8,20,27,36,45,50,63)
c. (2,3,5,20,8,27,36,45,50,63) d. (2,20,27,36,50,3,5,8,45,63)

3. Variabilele i, j, x și p sunt de tip întreg. Știind că de la tastatură se citesc numerele alăturate, în


această ordine, indicați expresia C/C++ care poate înlocui punctele de suspensie astfel încât, în urma
executării secvenței obținute, variabila p să memoreze produsul valorilor evidențiate (1,7,...5,2,2).
p=1; 1 8 3 9 6 5 5
for(i=0;i<7;i++) 0 7 4 2 5 5 4
for(j=0;j<7;j++) 8 6 3 5 1 2 3
{ cin>>x; | scanf(”%d”,&x); 2 4 9 4 8 3 4
if(.........) p=p*x; 2 1 7 5 5 5 6
} 7 4 2 4 9 2 7
0 9 6 3 1 7 2
a. i==j b. i%2==j%2 c. i<j d. i>j
4. Variabilele x și y sunt de tip întreg și memorează numere distincte. Indicați expresia C/C++ cu valoare
egală cu cel mai mic dintre numerele menționate.
a. (x+y+abs(x-y))/2 b. (x+y-abs(x+y))/2
c. (x+y-abs(x-y))/2 d. (x+y+abs(x+y))/2
5. Variabilele x, y, z, w și r sunt de tip întreg, iar r are inițial valoarea 0. Indicați o secvență echivalentă cu
cea de mai jos.
if (x==y) if(z==w) r=1; else r=2; else r=3;
a. if(x!=y) r=3; else if(z==w) r=1; else r=2;
b. if (x!=y || z==w) r=3; else if(x==y || z!=w) r=2; else r=1;
c. if (x==y && z!=w) r=3; else if(x==y && z!=w) r=2; else if(x!=y && z!=w) r=1;
d. if (x==y || z!=w) r=3; else if(x==y || z!=w) r=2; else if(x!=y || z!=w) r=1;

Probă scrisă la informatică Testul 11


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației Naționale
Centrul Național de Evaluare și Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citeşte n (număr natural)
S-a notat cu a%b restul împărțirii numărului natural a la numărul natural m0
nenul b și cu [c] partea întreagă a numărului real c. ┌dacă n=0 atunci
│ m10
a. Scrieți numărul afișat în urma executării algoritmului dacă se citește │altfel
valoarea 45530. (6p.) │┌repetă

b. Scrieți trei numere din intervalul [103,104) care pot fi citite astfel ││ cn%10; n[n/10]
││┌dacă c≥m atunci
încât, pentru fiecare dintre acestea, în urma executării algoritmului, să
│││ mc
se afișeze 1. (6p.)
│││altfel
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.) │││ m10
││└■
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind │└până când n=0
adecvat structura repetă...până când cu o structură repetitivă cu └■
test inițial. (6p.) scrie m

2. Pentru fiecare specie de flori dintr-o seră se memorează date specifice: un cod, reprezentând specia, și
prima literă a denumirii populare. Setul de variabile cod1, denumire1 memorează date specifice pentru
o specie de flori, iar setul de variabile cod2, denumire2 memorează date specifice pentru o altă specie
de flori. Scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe ecran mesajul
Duplicat, dacă cele două seturi de variabile memorează aceleași date specifice, mesajul
Specie cu mai multe denumiri populare, dacă datele specifice se referă la o specie
identificată prin același cod, dar denumire populară diferită, sau mesajul Specii diferite, în
celelalte cazuri. (6p.)

3. Pentru a verifica dacă în tabloul unidimensional (4,8,9,14,16,24,48) există elementul cu valoarea


x=4 se aplică metoda căutării binare. Scrieți succesiunea de elemente a căror valoare se compară cu x
pe parcursul aplicării metodei. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citesc două numere naturale, x și y (1≤x≤y) și se cere să se scrie o expresie aritmetică
reprezentând suma numerelor din intervalul [x,y] care au proprietatea că sunt pătrate perfecte,
urmate de valoarea acestei sume. Termenii sumei sunt într-o ordine oarecare și sunt separați prin câte
un simbol plus (+), iar valoarea sumei este precedată de simbolul egal (=), ca în exemplu. Dacă nu
există niciun astfel de termen, se scrie mesajul nu exista.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă x=10 și y=50 se poate scrie 16+25+36+49=126 (10p.)

2. Scrieți un program C/C++ care citește de la tastatură un număr natural n (n[2,102]) și cele n
elemente ale unui tablou unidimensional, numere naturale din intervalul [102,899]. Programul
transformă tabloul în memorie, înlocuind prima cifră a fiecărui număr cu cifra consecutivă, ca în
exemplu. Elementele tabloului obținut sunt afișate pe ecran, separate prin câte un spațiu.
Exemplu: pentru n=6 și tabloul (178,899,476,660,409,312) se obține tabloul
(278,999,576,760,509,412) (10p.)
3. Fişierul bac.txt conţine un şir crescător de cel mult 106 numere naturale din intervalul [0,109],
separate prin câte un spaţiu. Se cere să se afişeze pe ecran fiecare număr distinct din şir. Numerele
afișate sunt separate prin câte un spațiu. Proiectați un algoritm eficient din punctul de vedere al
memoriei utilizate și al timpului de executare.
Exemplu: dacă fişierul bac.txt conține numerele 0 0 0 5 5 5 5 7 7 11 20 20
se afișează 0 5 7 11 20
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 11


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației Naționale
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 12
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Variabilele x şi y sunt întregi și memorează câte un număr natural. Indicați o expresie C/C++ care are
valoarea 1 dacă şi numai dacă numărul memorat în x este strict mai mare decât 0 şi numărul memorat
în y este strict mai mare decât 20.
a. x*y-20!=0 b. x*(y-20)!=0
c. x*(y-20)>=0 d. !(x*(y-20)<=0)

2. Tablourile unidimensionale A și B au elementele: A=(2,20,27,36,50), iar B=(3,5,8,45,63). În


urma interclasării lor în ordine descrescătoare se obține tabloul cu elementele:
a. (63,45,8,5,3,50,36,27,20,2) b. (63,45,27,20,3)
c. (63,50,45,36,27,8,20,5,3,2) d. (63,50,45,36,27,20,8,5,3,2)

3. Variabilele p, x, i și j sunt întregi. Scrieți valoarea variabilei p în urma executării secvenței, știind că au
fost citite numerele alăturate.
p=1; 1 8 3 9 6 5 5
for(i=0;i<7;i++) 0 0 4 2 5 5 4
for(j=0;j<7;j++) 8 6 3 5 1 2 3
{ cin>>x; | scanf(”%d”,&x); 2 4 9 2 8 3 4
if(i==j && x!=0) p=p*x; 2 1 7 5 5 5 6
} 7 4 2 4 9 2 7
0 9 6 3 1 7 0
a. 0 b. 45 c. 60 d. 800

4. Indicați valoarea expresiei alăturate. fabs(-20.20)


(6p.)
a. 21 b. 20.20 c. -20 d. -21
5. Variabilele x, y, z, w și r sunt de tip întreg, iar r are inițial valoarea 0. Indicați o secvență echivalentă
cu cea de mai jos.
if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else r=3;
a. if (x==y) if(z==w) r=1; else r=2; else r=3;
b. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else r=3;
c. if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else if(x!=y && z!=w) r=3;
d. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else if(x!=y || z!=w) r=3;

Probă scrisă la informatică Testul 12


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației Naționale
Centrul Național de Evaluare și Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citeşte n (număr natural nenul)
S-a notat cu a%b restul împărțirii numărului natural a la nr0
numărul natural nenul b și cu [c] partea întreagă a c9
numărului real c. ┌cât timp c≥0 execută
│ mn
a. Scrieți numărul afișat în urma executării algoritmului dacă
│┌cât timp m≠0 şi m%10c execută
se citește valoarea 2592. (6p.)
││ m[m/10]
b. Scrieți trei numere din intervalul [103,104) care pot fi │└■
citite astfel încât, pentru fiecare dintre acestea, în urma │┌dacă m0 atunci
executării algoritmului, să se afișeze 20. (6p.) ││ nrnr*10+m%10
│└■
c. Scrieți programul C/C++ corespunzător algoritmului dat. │ cc-1
(10p.) └■
scrie nr

d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind adecvat prima structură
cât timp...execută cu o structură de tip pentru...execută. (6p.)

2. Pentru fiecare dintre cele trei specii de flori dintr-o florărie se memorează date specifice: un cod,
reprezentând specia, și numărul de exemplare disponibile. Variabilele cod1 și nr1 memorează datele
specifice pentru prima specie, variabilele cod2 și nr2 datele specifice pentru cea de a doua specie, iar
variabilele cod3 și nr3 datele specifice pentru cea de a treia specie. Știind că cele trei specii au un
număr diferit de exemplare, scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe
ecran codul speciei din care există cele mai puține exemplare. (6p.)

3. Pentru a verifica dacă în tabloul unidimensional (48,24,16,14,9,8,4) există elementul cu valoarea


x=4 se aplică metoda căutării binare. Scrieți succesiunea de elemente a căror valoare se compară cu x
pe parcursul aplicării metodei. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural n (n≥1) și se cere să se scrie cea mai mare valoare din intervalul [1,n],
cu proprietatea că este o putere a lui 2.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=20, se scrie 16. (10p.)

2. Scrieți un program C/C++ care citește de la tastatură un număr natural n (n[2,102]) și cele n
elemente ale unui tablou unidimensional, numere naturale din intervalul [1,109]. Programul transformă
tabloul în memorie, eliminând numai ultimul element par, ca în exemplu. Elementele tabloului obținut
sunt afișate pe ecran, separate prin câte un spațiu, iar dacă nu există niciun element par, se afișează pe
ecran mesajul nu exista.
Exemplu: pentru n=8 și tabloul (20,25,10,90,45,163,45,3)
se obține tabloul (20,25,10,45,163,45,3) (10p.)
3. Șirul de mai jos este definit alăturat: n dacă n≤10
fn = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 40, 80, 160.... 2∙fn-1 dacă n>10

Se citește de la tastatură un număr natural x (x[1,109]), termen al șirului dat, şi se cere să se scrie
în fișierul bac.out, separați prin câte un spațiu, în ordine strict descrescătoare, toți termenii șirului mai
mici sau egali cu x. Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate și al
timpului de executare.
Exemplu: dacă valoarea citită de la tastatură este 80
se scriu în fișier numerele 80 40 20 10 9 8 7 6 5 4 3 2 1
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 12


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

Examenul de bacalaureat naţional 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 13
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Indicați o expresie C/C++ care are valoarea 1 dacă şi numai dacă numărul natural memorat în variabila
întreagă n este divizibil cu 4 şi cu 5.
a. !(n%4!=0 || n%5!=0) b. !(n/4==1 || n/5!=0)
c. n%4==0 && !(n%5==0) d. n/4==0 && !(n/5==0)
2. Pentru a verifica dacă într-un tablou unidimensional există elementul cu valoarea x=4, se aplică metoda
căutării binare, iar succesiunea de elemente a căror valoare se compară cu x pe parcursul aplicării
metodei este 14, 8, 4. Elementele tabloului pot fi:
a. (48,14,9,8,7,4,2) b. (14,14,8,8,4,4)
c. (14,8,4,3,2,0) d. (4,8,9,14,16,24,48)
3. Tablourile unidimensionale A și B au elementele: A=(50,36,27,20,2), iar B=(63,45,8,5,3). În
urma interclasării lor în ordine crescătoare se obține tabloul cu elementele:
a. (2,3,5,8,20,27,36,45,50,63) b. (2,5,8,27,50)
c. (50,36,27,20,2,63,45,8,5,3) d. (50,63,36,45,8,27,5,20,2,3)
4. O expresie C/C++ care are valoarea 1.0 este:
a. ceil(-0.2080) b. ceil(0.8020) c. floor(-0.2080) d. floor(0.8020)
5. În secvenţa de instrucţiuni alăturată, toate variabilele sunt de tip întreg. O x=2020; y=2200;
expresie care poate înlocui punctele de suspensie astfel încât, în urma while (y!=0)
executării secvenţei, variabila x să aibă o valoare egală cu cel mai mare { z=....; x=y; y=z;}
divizor comun al numerelor 2020 şi 2200 este: (4p.)
a. x%2 b. x/2 c. x%y d. x/y

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citeşte n (număr natural)
S-a notat cu a%b restul împărţirii numărului natural a la numărul p1; m0; k0
natural nenul b şi cu [c] partea întreagă a numărului real c. ┌cât timp n≠0 execută
│ citește x (număr natural)
a. Scrieţi valoarea care se afişează în urma executării algoritmului
│ ik
dacă se citesc, în această ordine, numerele 12345, 25, 2070,
│┌cât timp i≠0 execută
49, 270135, 21. (6p.)
││ x[x/10]; ii-1
b. Dacă pentru n se citește numărul 100, scrieți un set de date din │└■
intervalul [103,104) care pot fi citite în continuare, astfel încât, │┌dacă x=0 atunci cn%10
în urma executării algoritmului, să se afișeze 10. (6p.) ││altfel cx%10
│└■
c. Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.) │ mc*p+m; n[n/10]
d. Scrieţi în pseudocod un algoritm, echivalent cu cel dat, care să │ pp*10; kk+1
conțină o singură instrucțiune repetitivă. (6p.) └■
scrie m

Probă scrisă la informatică Testul 13


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

2. Variabila întreagă raza memorează raza unui cerc, iar variabilele reale centruX și centruY
memorează coordonatele reale (abscisa și ordonata), în planul xOy, ale centrului unui cerc. Declarați
corespunzător variabilele centruX și centruY și scrieți o secvență de instrucțiuni în urma executării
căreia să se afișeze pe ecran mesajul Unitar dacă cercul precizat are centrul în originea sistemului de
coordonate și raza egală cu 1, sau mesajul Altceva în caz contrar. (6p.)
3. Variabila i este de tip întreg, iar c1='s';c2='o';c3='u';
celelalte variabile sunt de tip char. cout<<c2<<c3<<endl; | printf("%c%c\n",c2,c3);
Scrieți ce se afișează în urma for(i=0;i<4;i++)
executării secvenței alăturate. (6p.) { c=c1+(i-1)*(1-i%2)+3*(2*i/3-1)*(i%2);
if(i==0) c1=c;
cout<<c; | printf("%c",c);
}

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural n (n≥2) și se cere să se scrie, în această ordine, numerele d și p,
reprezentând divizorul prim, d, care apare la cea mai mică putere, p, în descompunerea în factori primi a lui
n; dacă există mai mulți astfel de divizori se afișează cel mai mic dintre ei.
Scrieţi, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=10780, atunci se scriu numerele 5 1 (10780=2257211). (10p.)
2. Scrieţi un program C/C++ care citeşte de la tastatură două numere naturale din intervalul [2,20], n și
k, şi construieşte în memorie un tablou unidimensional cu n∙k elemente astfel: tabloul memorează un
şir crescător de termeni cu proprietatea că primul termen este n, fiecare valoare apare în şir de exact k
ori și oricare doi termeni alăturați au valori egale sau consecutive. Programul afişează pe ecran tabloul
construit, cu valorile separate prin câte un spaţiu.
Exemplu: dacă n=3 și k=4, se obține tabloul alăturat. 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6
(10p.)
3. Șirul de mai jos este definit astfel: f1=1, fn=2∙fn-1 (unde n este un număr natural n≥2).
1, 2, 4, 8, 16, 32....
Se citește de la tastatură un număr natural x (x≤109), valoare a unui termen al șirului dat, şi se cere să
se scrie în fişierul text bac.txt, în ordine descrescătoare, separați prin câte un spațiu, toţi termenii
şirului care sunt mai mici sau egali cu x. Proiectați un algoritm eficient din punctul de vedere al
memoriei utilizate şi al timpului de executare.
Exemplu: dacă se citește numărul 16
fişierul bac.txt conţine numerele 16 8 4 2 1
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 13


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

Examenul de bacalaureat naţional 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 14
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Indicați o expresie care are valoarea 1 dacă şi numai dacă numărul memorat în variabila întreagă x
aparţine intervalului [-2002,2020].
a. !(x<-2002 || x>2020) b. x>-2002 || x<2020
c. !(x+2020<0 && x-2002>0) d. x+2020>=0 && x-2002<=0
2. Pentru a verifica dacă într-un tablou unidimensional există elementul cu valoarea x=4, se aplică metoda
căutării binare, iar succesiunea de elemente a căror valoare se compară cu x pe parcursul aplicării
metodei este 14, 8, 4. Elementele tabloului pot fi:
a. (14,14,8,8,4,4) b. (48,14,9,8,7,4,2)
c. (48,24,16,14,8,4) d. (48,24,16,14,9,8,4)
3. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona punctată astfel încât, în
urma executării secvenței obținute, să se afișeze pe ecran valorile alăturate.
for(i=0;i<5;i++) 0 1 2 3 4 0 1
{ for(j=0;j<7;j++) 1 2 3 4 5 1 2
cout<<.........<<" "; | printf("%d ",.........); 2 3 4 5 6 2 3
cout<<endl; | printf("\n"); 3 4 5 6 7 3 4
} 4 5 6 7 8 4 5
a. i%5+j%7 b. i%7+j%5 c. (i+j)%7 d. (i+j)%5
4. Variabilele E, x şi y sunt de tip float şi au valori nenule. Instrucţiunea prin care i se x2
atribuie variabilei E rezultatul evaluării expresiei alăturate este: (10+ )∙2
y
a. E=10+pow(x,2)/y*2; b. E=(10+pow(x,2))/y*2;
c. E=(10+pow(x,2)/y)*2; d. E=(10+pow(x,2))/(y*2);
5. Variabilele x, y, z, w și r sunt de tip întreg, iar r are inițial valoarea 0. Indicați o secvență echivalentă
cu cea de mai jos.
if(x!=y) r=3; else if(z==w) r=1; else r=2;
a. if (x==y) if(z==w) r=1; else r=2; else r=3;
b. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else r=3;
c. if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else if(x!=y && z!=w) r=3;
d. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else if(x!=y || z!=w) r=3;

Probă scrisă la informatică Testul 14


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Naţional de Evaluare şi Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citeşte n (număr natural)
S-a notat cu a%b restul împărţirii numărului natural a la numărul m0
natural nenul b şi cu [c] partea întreagă a numărului real c. ┌repetă
│ cn%10; n[n/10]
a. Scrieţi valoarea afişată dacă se citeşte numărul 1527894. (6p.)
│┌dacă c=9 atunci c1
b. Scrieţi trei numere care pot fi citite astfel încât, pentru fiecare dintre ││altfel
acestea, în urma executării algoritmului să se afișeze 1. (6p.) ││┌dacă c%2=1 atunci
│││cc+1
c. Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.) ││└■
d. Scrieţi în pseudocod un algoritm, echivalent cu cel dat, înlocuind adecvat │└■
structura repetă...până când cu o structură repetitivă cu test inițial. │ mm*10+c
(6p.) └până când n=0
scrie m
2. Variabilele întregi v1, v2 și v3 memorează, pentru fiecare dintre cei trei porumbei aflați într-o volieră,
vârsta acestora. Scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe ecran
vârstele celor trei porumbei, în ordine crescătoare, separate prin câte un spațiu. (6p.)
3. Tabloul unidimensional A are elementele: A=(2,20,27,36,50), iar în urma interclasării lui
crescătoare cu tabloul unidimensional B se obține tabloul cu elementele
(2,3,5,8,20,27,36,45,50,63). Scrieți elementele tabloului B, în ordinea apariției lor în acesta.
(6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Două numere a și b (a<b) sunt numite divizori pereche ai unui număr natural n dacă a∙b=n.
Se citește un număr natural, n (n>1), și se cere să se scrie toate perechile distincte de numere naturale cu
paritate diferită cu proprietatea că sunt divizori pereche ai lui n. Fiecare pereche este afișată încadrată între
paranteze drepte, numerele din pereche fiind afișate în ordine strict crescătoare, separate printr-un spațiu, iar
dacă nu există astfel de perechi, se afișează pe ecran mesajul nu exista.
Scrieţi, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=12 se scrie, nu neapărat în această ordine, [1 12][3 4]
iar dacă n=9 se scrie nu exista (10p.)

2. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural, n (n[2,102]), apoi cele n
elemente ale unui tablou unidimensional, numere reale din intervalul [-102,102], dintre care cel puțin
unul este pozitiv și cel puțin unul este negativ. Programul transformă în memorie tabloul, înlocuind
fiecare număr negativ cu valoarea sa absolută, apoi afişează pe ecran elementele tabloului obţinut.
Exemplu: pentru n=10 și taboul (2,5,2,4,-3,4,-2,-7,-2,9)
se obține tabloul (2,5,2,4,3,4,2,7,2,9) (10p.)
3. Fişierul bac.in conţine un şir de numere naturale distincte, din intervalul [1,109]. Numerele din şir
sunt separate prin câte un spaţiu şi cel puţin două dintre ele au penultima cifră 2 și ultima cifră 0.
Se cere să se afișeze pe ecran cele mai mici două numere din şir cu proprietatea că au penultima cifră
2 și ultima cifră 0. Numerele determinate sunt afişate în ordine crescătoare, separate prin câte un
spaţiu. Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate şi al timpului de
executare.
Exemplu: dacă fişierul conţine numerele 9731 50 112 20 8 16 8520 3 2520 1520
pe ecran se vor afişa, în această ordine, numerele: 20 1520
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 14


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației Naționale
Centrul Național de Evaluare și Examinare

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 15
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Expresia C/C++
(x>=16) && !( x<17 || x>19) && (x<=20)
are valoarea 1 dacă și numai dacă valoarea memorată de variabila întreagă x aparține intervalului:
a. [16,18] b. [17,19] c. [18,20] d. [19,20]
2. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona punctată astfel încât, în
urma executării secvenței obținute, să se afișeze pe ecran valorile alăturate.
for(i=0;i<4;i++) 1 5 9 13 17
{ for(j=0;j<5;j++) 2 6 10 14 18
cout<<.........<<" "; | printf("%d ",.........); 3 7 11 15 19
cout<<endl; | printf("\n"); 4 8 12 16 20
}
a. j+1+5*i b. j+1-5*i c. i+1+4*j d. i+1-4*j
3. Tabloul unidimensional A are elementele: A=(2,20,27,36,50), iar în urma interclasării lui crescătoare
cu tabloul unidimensional B se obține tabloul cu elementele (2,3,5,8,20,27,36,45,50,63).
Indicați elementele tabloului B, în ordinea apariției lor în acesta.
a. (1,15,19,9,13) b. (2,1,20,15,27,19,36,9,50,13)
c. (2,20,27,36,50,1,3,5,6,3) d. (3,5,8,45,63)

4. Variabilele E, x, y și z sunt de tip real și au valori nenule. Indicați E=x/(2020+z)/pow(2019,2);


expresia prin a cărei evaluare se obține valoarea atribuită
variabilei E prin instrucțiunea alăturată.
a. 𝐱 b. 𝐱 c. 𝐱 z d. 𝐱
𝟐
+ 2 ∙ 2019𝟐
(2020+z) ∙ 2019 (2019+z) ∙ √2020 2020 2019 2020+z

5. Variabilele x, y, z, w și r sunt de tip întreg, iar r memorează inițial valoarea 0. Indicați o secvență
echivalentă cu cea de mai jos.
if(x==y && z!=w) r=1; else if(x==y && z==w) r=2; else r=3;
a. if (x==y || z!=w) r=1; else if(x!=y || z==w) r=2; else if(x!=y) r=3;
b. if (x==y || z!=w) r=1; else if(x==y || z==w) r=2; else r=3;
c. if (x!=y) r=3; else if(x==y || z==w) r=2; else if(x!=y) r=3;
d. if(x!=y) r=3; else if(z==w) r=2; else r=1;

Probă scrisă la informatică Testul 15


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației Naționale
Centrul Național de Evaluare și Examinare

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește n (număr natural)
nr0
a. Scrieți numărul afișat în urma executării algoritmului dacă
┌pentru in,1,-1 execută
pentru n se citește valoarea 5. (6p.)
│ x0; y1
b. Scrieți două numere din intervalul [10,102) care pot fi │ ┌pentru j1,i execută
citite astfel încât, pentru fiecare dintre acestea, în urma │ │ r2*x-y; xy; yr
executării algoritmului, să se afișeze 14. (6p.) │ └■
│ ┌dacă y>0 atunci
c. Scrieți programul C/C++ corespunzător algoritmului dat. │ │ nrnr+1
(10p.) │ └■
└■
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, scrie nr
înlocuind adecvat prima structură pentru...execută cu
o structură repetitivă de alt tip. (6p.)

2. Pentru un punct se memorează coordonatele (abscisa și ordonata) în sistemul de coordonate xOy.


Variabilele Ax și Ay, de tip real, memorează coordonatele unui punct A, iar variabilele Bx și By, de tip
real, memorează coordonatele unui punct B. Declarați variabilele și scrieți o secvență de instrucțiuni în
urma executării căreia să se afișeze pe ecran mesajul origine, dacă unul dintre punctele A sau B
coincide cu originea sistemului de coordonate, sau mesajul altceva, în caz contrar. (6p.)

3. Pentru a verifica dacă în tabloul unidimensional (48,24,16,14,9,8,4) există elementul cu valoarea


x se aplică metoda căutării binare. Știind că valoarea x a fost comparată cu două elemente ale tabloului
pe parcursul aplicării metodei, scrieți două valori posibile ale lui x. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural n (n≥2) și se cere să se scrie cel mai mare divizor prim al lui n.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=2000, se scrie 5, deoarece 2000=2453. (10p.)

2. Scrieți un program C/C++ care citește de la tastatură un număr natural n (n[2,20]) și cele n
elemente ale unui tablou unidimensional, numere naturale din intervalul [1,104). Programul afișează
pe ecran numărul de elemente ale sale formate dintr-un număr egal de cifre pare și cifre impare.
Exemplu: pentru n=8 și tabloul (2,24,10,902,4321,17,45,30)
se afișează pe ecran 4. (10p.)

3. Se citesc de la tastatură două numere naturale din intervalul [1,81], p1 și p2, și se cere scrierea în
fișierul bac.out a tuturor numerelor naturale cu exact 7 cifre, pentru care produsul primelor două cifre
este egal cu p1, cele trei cifre din mijloc sunt 0, iar produsul ultimelor două cifre este egal cu p2.
Numerele apar în fișier în ordine strict crescătoare, fiecare pe câte o linie. Proiectați un algoritm eficient
din punctul de vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă p1=12, iar p2=8, atunci 2600024 și 3400018 sunt două dintre cele 16 numere cu
proprietatea cerută (2∙6=3∙4=12 și 2∙4=1∙8=8).
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 15


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației Naționale
Centrul Național de Politici și Evaluare în Educație

Examenul de bacalaureat național 2020


Proba E. d)
Informatică
Limbajul C/C++
Testul 16
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Expresia C/C++
(x<17) || !(x<=18 || x>=20) || (x>21)
are valoarea 0 pentru orice valoare a variabilei întregi x din mulțimea:
a. {17,18,19} b. {17,18,20,21} c. {18,19,20} d. {18,19,20,21}

2. Indicați o declarare a unui tablou unidimensional cu exact 40 de elemente, litere mici ale alfabetului
englez.
a. char m[40]; b. float m[40];
c. char m[26]; d. float m[26];

3. Pentru a verifica dacă într-un tablou unidimensional există elementul cu valoarea x=4, se aplică metoda
căutării binare, iar succesiunea de elemente a căror valoare se compară cu x pe parcursul aplicării
metodei este 14, 8, 4. Elementele tabloului pot fi:
a. (4,8,9,14,16,24,48) b. (14,14,8,8,4,4)
c. (14,8,4,3,2,0) d. (48,14,9,8,7,4,2)
4. Variabilele x și y sunt de tip întreg și memorează numere distincte. Indicați expresia C/C++ cu valoare
egală cu cel mai mare dintre numerele menționate.
a. (x+y-abs(x-y))/2 b. (x+y-abs(x+y))/2
c. (x+y+abs(x-y))/2 d. (x+y+abs(x+y))/2
5. Variabilele x, y, z, w și r sunt de tip întreg, iar r are inițial valoarea 0. Indicați o secvență echivalentă
cu cea de mai jos.
if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else r=3;
a. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else if(x!=y || z!=w) r=3;
b. if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else if(x!=y && z!=w) r=3;
c. if (x!=y || z==w) r=3; else if(x==y || z!=w) r=2; else r=1;
d. if(x!=y) r=3; else if(z==w) r=1; else r=2;

Probă scrisă la informatică Testul 16


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației Naționale
Centrul Național de Politici și Evaluare în Educație

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește n,k
S-a notat cu a%b restul împărțirii numărului natural a la numărul natural (numere naturale)
nenul b și cu [c] partea întreagă a numărului real c. ┌dacă k=0 atunci nr-1
│altfel
a. Scrieți numărul afișat în urma executării algoritmului dacă se citesc, în
această ordine, numerele 812302105 și 4. (6p.) │ nr0
│ p1
b. Dacă pentru k se citește numărul 1, scrieți trei numere din intervalul │┌repetă
[103,104) care pot fi citite pentru n, astfel încât, pentru fiecare dintre ││ cn%10; n[n/10]
acestea, în urma executării algoritmului, să se afișeze un număr ││┌dacă c%2=0 atunci
format din două cifre identice. (6p.) │││ nrnr+c*p; pp*10
│││altfel kk-1
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.)
││└■
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind │└până când n=0 sau k=0
adecvat structura repetă...până când cu o structură repetitivă de └■
alt tip. (6p.) scrie nr

2. Pentru un punct se memorează coordonatele (abscisa și ordonata) în sistemul de coordonate xOy.


Variabilele Ax și Ay, de tip întreg, memorează abscisa, respectiv ordonata punctului A, iar variabilele
Bx și By, de tip întreg, memorează abscisa, respectiv ordonata punctului B. Declarați variabilele și
scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe ecran mesajul
intersecteaza axa, dacă segmentul cu extremitățile în punctele A și B intersectează axa Ox a
sistemului de coordonate, sau mesajul nu intersecteaza axa, în caz contrar. (6p.)

3. Variabila i este de tip întreg, iar variabila c este de for(i=1;i<=7;i++)


{ if(i<=3) c=’a’+(1+i/2)*(i%2);
tip char. Scrieți ce se afișează în urma executării
else c=’0’+(1-i%2)*2;
secvenței de program alăturate. (6p.)
cout<<c; | printf("%c",c);
}

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural n (n≥2) și se cere să se scrie numărul divizorilor care, în descompunerea în
factori primi a lui n, apar la o putere impară.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=9000, se scrie 2 (9000=233253). (10p.)
2. Scrieți un program C/C++ care citește de la tastatură un număr natural n (n[2,102]) și construiește în
memorie un tablou unidimensional cu n elemente, cu proprietatea că parcurgându-l de la stânga la
dreapta se obține șirul primelor n pătrate perfecte impare, ordonat strict descrescător, ca în exemplu.
Elementele tabloului obținut se afișează pe ecran, separate prin câte un spațiu.
Exemplu: pentru n=6 se obține tabloul (121,81,49,25,9,1). (10p.)
3. Fișierul bac.in conține numere naturale: pe prima linie două numere din intervalul [1,106], m și n, pe
a doua linie un șir de m numere pare din intervalul [1,109], iar pe a treia linie un șir de n numere
impare din intervalul [1,109]. Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un
spațiu, și ambele șiruri sunt ordonate strict crescător.
Se cere să se afișeze pe ecran, în ordine strict crescătoare, un șir format dintr-un număr maxim de
termeni care aparțin cel puțin unuia dintre cele două șiruri, astfel încât oricare două elemente aflate pe
poziții consecutive să fie de paritate diferită. Numerele afișate sunt separate prin câte un spațiu.
Proiectați un algoritm eficient din punctul de vedere al timpului de 5 3
executare. 2 4 8 10 14
Exemplu: dacă fișierul are conținutul alăturat, se afișează pe ecran 3 5 11
2 3 4 5 8 11 14 sau 2 3 4 5 10 11 14
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 16


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației și Cercetării
Centrul Național de Politici și Evaluare în Educație
Examenul de bacalaureat național 2020
Proba E. d)
Informatică
Limbajul C/C++
Testul 17
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.
SUBIECTUL I (20 de puncte)
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.
1. Variabila x este de tip întreg și memorează un număr nenul. Indicați expresia C/C++ cu valoarea 1
pentru orice multiplu al lui 2020 memorat în variabila x.
a. x/(x/2020)==0 b. x/(x%2020)==0 c. x%(x%2020)==0 d. x%(x/2020)==0
2. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona punctată astfel încât, în
urma executării secvenței obținute, să se afișeze pe ecran valorile alăturate.
for(i=0;i<4;i++) 20 16 12 8 4
{ for(j=0;j<5;j++) 19 15 11 7 3
cout<<.........<<" "; | printf("%d ",.........); 18 14 10 6 2
cout<<endl; | printf("\n"); 17 13 9 5 1
}
a. 20-4*i-j b. 20-4*i+j c. 20-i-4*j d. 20-i+4*j

3. Tabloul unidimensional A are elementele: A=(2,20,27,36,50), iar în urma interclasării lui


descrescătoare cu tabloul unidimensional B se obține tabloul cu elementele
(63,50,45,36,27,20,8,5,3,2). Indicați elementele tabloului B, în ordinea apariției lor în acesta.
a. (1,-15,-19,9,13) b. (51,25,-19,-31,-47)
c. (63,45,8,5,3) d. (63,45,8,5,3,50,36,27,20,2)

4. Indicați expresia a cărei valoare este 20.


a. floor(21.19) b. floor(20.19) c. floor(19.20) d. floor(21.20)

5. În secvența de instrucțiuni alăturată, toate variabilele sunt întregi. Indicați o x=2020; y=50;
expresie care poate înlocui punctele de suspensie astfel încât, în urma while (x!=y)
executării secvenței obținute, variabila x să aibă o valoare egală cu cel mai { if(....) x=x-y;
else y=y-x;
mare divizor comun al numerelor 50 și 2020.
}
a. x-y>0 b. x+y>0 c. x/y==0 d. x%y==0

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește x,y
S-a notat cu a%b restul împărțirii numărului natural a la numărul (numere naturale x≤y)
natural nenul b. ix; jy; s0
┌cât timp i≤j execută
a. Scrieți ce se afișează în urma executării algoritmului dacă se │┌dacă i%2=0 atunci
citesc, în această ordine, numerele 3 și 12. (6p.) ││ ss+j
b. Scrieți două seturi de date din intervalul [1,10] care pot fi citite │└■
astfel încât, pentru fiecare dintre acestea, în urma executării │┌dacă j%2=0 atunci
algoritmului, să se afișeze numărul 20. (6p.) ││ ss+i
│└■
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.) │ii+1; jj-1
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind └■
adecvat structura cât timp...execută cu o structură repetitivă de scrie s
alt tip. (6p.)

Probă scrisă la informatică Testul 17


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației și Cercetării
Centrul Național de Politici și Evaluare în Educație

2. Pentru un obiectiv turistic din evidența unei agenții se memorează o perioadă din an în care se
recomandă să fie vizitat, formată din zile consecutive, între două date (ziua și luna de început, respectiv
ziua și luna finală). Variabilele întregi zi1 și luna1 memorează ziua, respectiv luna corespunzătoare
uneia dintre cele două date precizate, iar variabilele întregi zi2 și luna2 memorează ziua, respectiv
luna corespunzătoare celeilalte date precizate. Scrieți o secvență de instrucțiuni C/C++ în urma
executării căreia să se afișeze pe ecran, pe rânduri separate, cele două date, în ordine cronologică;
pentru fiecare dată se afișează ziua, apoi luna, separate printr-un spațiu. (6p.)
3. Variabila a este de tip char, iar variabilele i și ok sunt de tip întreg. De la tastatură se citesc numai
litere mici ale alfabetului englez.
Fără a utiliza alte variabile, scrieți secvența înlocuind punctele ...........
de suspensie astfel încât, în urma executării secvenței for(i=1;i<=11;i++)
obținute, variabila ok să aibă valoarea 1 dacă toate literele { cin>>a; | scanf(“%c”,&a);
citite sunt vocale, sau valoarea 0 altfel. Se consideră vocale .................
literele a, e, i, o, u. }

Exemplu: dacă se citesc literele o a i a a i a e a e i


variabila ok va memora 1. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural, n, și se cere să se scrie cea mai mare cifră impară din scrierea acestuia,
sau -1 dacă nu există astfel de cifre. Scrieți, în pseudocod, algoritmul de rezolvare a problemei
enunțate.
Exemplu: dacă n=5672883, se scrie 7. (10p.)

2. Scrieți un program C/C++ care citește de la tastatură numere naturale: n (n[2,20]) și cele n
elemente ale unui tablou unidimensional, valori din intervalul [102,103). Programul transformă tabloul
în memorie, duplicând fiecare număr format numai din cifre impare, ca în exemplu. Elementele tabloului
obținut sunt afișate pe ecran, separate prin câte un spațiu, iar dacă nu există numere duplicate, se
afișează pe ecran mesajul nu exista.
Exemplu: pentru n=6 și tabloul (100,315,507,160,375,843)
se obține tabloul (100,315,315,507,160,375,375,843). (10p.)
3. Fișierul text bac.txt conține numere naturale din intervalul [1,104]: pe prima linie un număr n, pe a
doua linie un șir de n numere, iar pe fiecare dintre următoarele linii, până la finalul fișierului, câte un
termen al unui al doilea șir. Numerele aflate pe aceeași linie a fișierului sunt în ordine crescătoare și
sunt separate prin câte un spațiu.
Se cere să se afișeze pe ecran numărul de termeni ai celui de al doilea șir care NU 5
aparțin primului șir. Proiectați un algoritm eficient din punctul de vedere al timpului 4 8 9 16 25
de executare. 3
Exemplu: dacă fișierul conține numerele alăturate, se afișează pe ecran 3. 8
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.) 16
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.) 7
25
10

Probă scrisă la informatică Testul 17


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educației și Cercetării
Centrul Național de Politici și Evaluare în Educație
Examenul de bacalaureat național 2020
Proba E. d)
Informatică
Limbajul C/C++
Testul 18
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.
SUBIECTUL I (20 de puncte)
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.
1. Variabila x este de tip întreg și memorează un număr nenul. Indicați expresia C/C++ cu valoarea 1
dacă x memorează un divizor al lui 2020.
a. 2020/(2020/x)==0 b. 2020/(2020%x)==0
c. 2020%(2020%x)==0 d. 2020%(2020/x)==0
2. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona punctată astfel încât, în
urma executării secvenței obținute, să se afișeze pe ecran valorile alăturate.
for(i=0;i<6;i++) 2 0 0 0 0 0
{ for(j=0;j<6;j++) 0 2 0 0 0 0
if(.............) cout<<"0 "; | printf("0 ") 0 0 2 0 0 0
else cout<<"2 "; | printf("2 ") 0 0 0 2 0 0
cout<<endl; | printf("\n"); 0 0 0 0 2 0
} 0 0 0 0 0 2
a. (i+j)%2==0 b. (i-j)%2==0 c. i+j!=0 d. i-j!=0

3. Pentru a verifica dacă în tabloul unidimensional (4,8,9,14,16,24,48) există elementul cu valoarea


x se aplică metoda căutării binare. Știind că valoarea x a fost comparată cu trei elemente ale tabloului
pe parcursul aplicării metodei, două valori ale lui x ar putea fi:
a. 8, 14 b. 8, 9 c. 4, 9 d. 4, 8

4. O expresie C/C++ care are valoarea 20 este:


a. abs(2) b. ceil(19.75) c. floor(19.25) d. pow(10,2)

5. În secvența de instrucțiuni alăturată, toate variabilele sunt întregi. Indicați o x=2020; y=50;
expresie care poate înlocui punctele de suspensie astfel încât, în urma while (x!=y)
executării secvenței obținute, variabila x să aibă o valoare egală cu cel mai { if(x>y) x=....;
else y=y-x;
mare divizor comun al numerelor 50 și 2020.
}
a. x-y b. x+y c. (x+y)/2 d. (x-y)/2

SUBIECTUL al II-lea (40 de puncte)


1. Algoritmul alăturat este reprezentat în pseudocod. citește n,k
(numere naturale nenule)
a. Scrieți ce se afișează dacă se citesc, în această ordine, numerele ┌pentru i1,n execută
2 și 3. (6p.) │┌pentru jk,1,-1 execută
││ scrie j,' '
b. Scrieți două seturi de valori din intervalul [1,102] care pot fi citite │└■
astfel încât, pentru fiecare dintre acestea, în urma executării │┌pentru j1,k execută
algoritmului, ultima valoare afișată să fie 20. (6p.) ││ scrie j,' '
│└■
c. Scrieți programul C/C++ corespunzător algoritmului dat. (10p.)
│ kk-1
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind └■
adecvat una dintre structurile pentru...execută cu o structură
repetitivă de alt tip. (6p.)

Probă scrisă la informatică Testul 18


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educației și Cercetării
Centrul Național de Politici și Evaluare în Educație

2. Variabila catalog memorează numărul de catalog al unei lucrări muzicale a lui George Enescu, iar
variabila tip memorează o literă corespunzătoare numelui acesteia: litera O pentru opera cu numele
Oedip, litera P pentru suita simfonică având numele Poema română sau litera R pentru lucrarea
orchestrală cu numele Rapsodia română. Declarați corespunzător variabila tip și scrieți o secvență
de program care să afișeze pe ecran, pe rânduri separate, numele lucrării, fără diacritice, precum și
numărul de catalog al acesteia. (6p.)

3. Tabloul unidimensional A are elementele: A=(50,36,27,20,2), iar în urma interclasării lui


descrescătoare cu tabloul unidimensional B se obține tabloul cu elementele
(63,50,45,36,27,20,8,5,2). Scrieți elementele tabloului B, în ordinea apariției lor în acesta. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural, n, și se cere să se scrie suma cifrelor pare distincte din scrierea acestuia.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=67638825, se scrie 16 (16=6+8+2), iar dacă n=15, se scrie 0. (10p.)

2. Scrieți un program C/C++ care citește de la tastatură două numere naturale, n și k (n[2,20],
k[1,n]) și un șir de n numere naturale din intervalul [10,109], elemente ale unui tablou
unidimensional. Programul afișează pe ecran, separate prin câte un spațiu, numerele din șir care au
cifra zecilor egală cu cifra zecilor celui de al k-lea termen al șirului, ca în exemplu. Dacă nu există astfel
de numere, se afișează pe ecran mesajul nu exista.
Exemplu: pentru n=7, k=3 și tabloul (721,102,2020,523,2101,320,24), pe ecran se afișează
721 523 320 24 (10p.)
3. Numim 10-secvență într-un șir de numere naturale, o succesiune de termeni aflați pe poziții
consecutive în șir, cu proprietatea că sunt multipli ai numărului 10. Lungimea secvenței este egală cu
numărul de termeni ai săi.
Fișierul bac.txt conține un șir de cel mult 106 numere naturale din intervalul [0,109], separate prin
câte un spațiu. Cel puțin un termen din șir este multiplu al lui 10. Se cere să se afișeze pe ecran
lungimea maximă a unei 10-secvențe din șirul aflat în fișier. Proiectați un algoritm eficient din punctul de
vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă fișierul are conținutul 7 3 200 100 10 9 6 41 1002 20 30
alăturat, se afișează 3
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 18


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educaţiei și Cercetării
Centrul Național de Politici și Evaluare în Educație
Examenul de bacalaureat național 2020
Proba E. d)
Informatică
Limbajul C/C++
Testul 19
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Variabile x, y și z sunt de tip întreg. Indicați o expresie C/C++ care are valoarea 1 dacă și numai dacă
x, y și z au valori identice.
a. !(x!=y) || !(y!=z) b. !(x!=y!=z)
c. !( x!=y) || (y!=z) d. !(x!=y || y!=z)
2. Tabloul unidimensional A are elementele: A=(2,20,27,36,50), iar în urma interclasării lui
descrescătoare cu tabloul unidimensional B se obține tabloul cu elementele
(63,50,45,36,27,20,8,5,3,2). Indicați elementele tabloului B, în ordinea apariției lor în acesta.
a. (2,20,27,36,50,1,15,19,9,13) b. (3,5,8,45,63)
c. (19,15,13,9,1) d. (63,45,8,5,3,50,36,27,20,2)
3. Pentru a verifica dacă într-un tablou unidimensional există elementul cu valoarea x=9, se aplică metoda
căutării binare, iar succesiunea de elemente a căror valoare se compară cu x pe parcursul aplicării
metodei este 14, 8, 9. Elementele tabloului pot fi:
a. (2,9,7,8,12,14,48) b. (14,8,9,9,8,14)
c. (4,8,9,14,16,24,48) d. (14,14,8,8,9,9)
4. Variabilele x și y sunt de tip întreg. Indicați instrucțiunea care realizează o prelucrare x=abs(y);
echivalentă cu cea alăturată. (4p.)
a. if(x<y && y<0) b. if(x>y && y>0) c. if(y<0) x=-y; d. if(x<0) y=-x;
x=-y; y=-x; else x=y; else y=x;
5. Variabilele x, y, z, w și r sunt de tip întreg, iar r are inițial valoarea 0. Indicați o secvență echivalentă
cu cea de mai jos.
if(x!=y) r=3; else if(z==w) r=1; else r=2;
a. if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else r=3;
b. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else r=3;
c. if (x==y && z==w) r=1; else if(x==y && z!=w) r=2; else if(x!=y && z!=w) r=3;
d. if (x==y || z==w) r=1; else if(x==y || z!=w) r=2; else if(x!=y || z!=w) r=3;

Probă scrisă la informatică Testul 19


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Național de Politici și Evaluare în Educație
SUBIECTUL al II-lea (40 de puncte)
1. Algoritmul alăturat este reprezentat în pseudocod. citește n (număr natural nenul)
S-a notat cu a%b restul împărțirii numărului natural a la ┌cât timp n≠0 execută
numărul natural nenul b și cu [c] partea întreagă a numărului │ cn%10; n[n/10]
real c. │┌dacă c%2≠0 atunci
││ cc+1
a. Scrieți ce se afișează în urma executării algoritmului dacă │└■
se citește numărul 60534. (6p.) │┌cât timp c>0 și c<10 execută
b. Scrieți trei numere din intervalul [0,102] care pot fi citite astfel ││ scrie c
încât, pentru fiecare dintre acestea, în urma executării ││ cc*2
algoritmului, să se afișeze 88. (6p.) │└■
└■
c. Scrieți programul C/C++ corespunzător algoritmului dat.
(10p.)
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind adecvat a doua structură
cât timp...execută cu o structură repetitivă de alt tip. (6p.)
2. Variabilele întregi cod1 și nr1 memorează codul unui proiect, respectiv numărul surselor de
documentare consultate în cadrul acestuia, iar variabilele întregi cod2 și nr2 memorează codul unui alt
proiect, respectiv numărul surselor de documentare consultate în cadrul acestuia. Știind că numărul de
surse de documentare consultate este diferit pentru cele două proiecte, scrieți o secvență de instrucțiuni
în urma executării căreia să se afișeze pe ecran, separate printr-un spațiu, codul proiectului cu număr
maxim de surse documentare, precum și partea întreagă a numărului mediu de surse consultate în
cadrul celor două proiecte. (6p.)
3. Variabila a memorează un caracter, iar variabilele i și k sunt de tip întreg. De la tastatură se citesc
numai litere mici ale alfabetului englez.
Fără a utiliza alte variabile, scrieți secvența înlocuind punctele ...........
de suspensie astfel încât, în urma executării secvenței for(i=1;i<=10;i++)
obținute, variabila k să memoreze numărul de vocale citite. Se { cin>>a; | scanf(“%c”,&a);
consideră vocale literele a, e, i, o, u. .................
Exemplu: dacă se citesc literele i n f o r m a t i e }
în urma executării secvenței, k=5. (6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citește un număr natural nenul n și se cere să se scrie numărul de divizori naturali ai lui n cu aceeași
paritate ca n.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă n=20 se scrie 4 (divizorii lui 20 sunt 1, 2, 4, 5, 10, 20). (10p.)
2. Scrieți un program C/C++ care citește de la tastatură un număr natural, n (n [2,20]), și cele n elemente
ale unui tablou unidimensional, numere naturale din mulțimea {0,1}. Programul afișează pe ecran
mesajul DA dacă există cel puțin o pereche de elemente complementare egal depărtate de extremitățile
tabloului, sau mesajul NU în caz contrar. Două elemente sunt complementare dacă au valori diferite.
Exemplu: pentru n=10 și tabloul (1,1,0,0,1,1,0,1,1,0), se afișează pe ecran mesajul DA. (10p.)
3. Fișierul bac.txt conține, în ordine crescătoare, cel mult 106 numere naturale din intervalul [0,109],
separate prin câte un spațiu. Se cere să se afișeze pe ecran, în ordine strict crescătoare, separate prin
câte un spațiu, numerele distincte care apar în fișier. Proiectați un algoritm eficient din punctul de
vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă fișierul conține numerele 5 5 6 7 8 8 8 8 10 15 16 16 25 25 49
pe ecran se afișează, în această ordine, numerele 5 6 7 8 10 15 16 25 49
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 19


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2
Ministerul Educaţiei și Cercetării
Centrul Național de Politici și Evaluare în Educație
Examenul de bacalaureat național 2020
Proba E. d)
Informatică
Limbajul C/C++
Testul 20
Filieră teoretică, profil real, specializare științe ale naturii

• Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.


• Timpul de lucru efectiv este de 3 ore.
• 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ă.

SUBIECTUL I (20 de puncte)


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.
1. Indicați o expresie C/C++ care are valoarea 1 dacă și numai dacă numărul natural memorat în variabila
întreagă x are exact două cifre.
a. x/100!=0 || x/10==0 b. x/100==0 && x/10!=0
c. x%100!=0 || x%10==0 d. x%100==0 && x%10!=0
2. Pentru a verifica dacă într-un tablou unidimensional există elementul cu valoarea x=3, se aplică metoda
căutării binare, iar succesiunea de elemente a căror valoare se compară cu x pe parcursul aplicării
metodei este 14, 8, 4. Elementele tabloului pot fi:
a. (14,14,8,8,4,4) b. (48,14,9,8,7,4,2)
c. (48,24,16,14,8,4) d. (48,24,16,14,9,8,4)
3. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui zona b a a a a a b
punctată astfel încât, în urma executării secvenței obținute, să se afișeze pe b b a a a b b
ecran caracterele alăturate. b b b a b b b
for(i=0;i<7;i++) b b b b b b b
{ for(j=0;j<7;j++) b b b a b b b
if(............) cout<<"a "; | printf("a "); b b a a a b b
else cout<<"b "; | printf("b "); b a a a a a b
cout<<endl; | printf("\n");
}
a. (i<j || i+j<6) && (i>j || i+j>6) b. (i<j && i+j<6) || (i>j && i+j>6)
c. (i<j || i+j<6) || (i>j || i+j>6) d. (i<j && i+j<6) && (i>j && i+j>6)
4. O expresie C/C++ care are valoarea 400 este:
a. sqrt(20) b. sqrt(40) c. pow(20,2) d. pow(10,4)
5. În secvența de instrucțiuni alăturată, toate variabilele sunt întregi. x=2020; y=50;
Indicați o expresie care poate înlocui punctele de suspensie astfel while (x!=y)
încât, în urma executării secvenței obținute, variabila x să aibă o { if(x>y) x=x-y;
valoare egală cu cel mai mare divizor comun al numerelor 50 și 2020. else y=.....;
}
a. y-x b. 2*x-y c. y-x/2 d. (x-y)/2

Probă scrisă la informatică Testul 20


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 1 din 2
Ministerul Educaţiei și Cercetării
Centrul Național de Politici și Evaluare în Educație
SUBIECTUL al II-lea (40 de puncte)
1. Algoritmul alăturat este reprezentat în pseudocod. citește n
S-a notat cu a%b restul împărțirii numărului natural a la (număr natural nenul)
numărul natural nenul b și cu [c] partea întreagă a d1; s0
numărului real c. ┌cât timp d*d<n execută
│┌dacă n%d=0 și d%2≠[n/d]%2 atunci
a. Scrieți ce se afișează dacă se citește numărul 12. (6p.) ││ ss+d+[n/d]
b. Scrieți două numere din intervalul [2,102], unul par și │└■
unul impar, care pot fi citite astfel încât, pentru fiecare │ dd+1
dintre acestea, în urma executării algoritmului, să se └■
afișeze 9. (6p.) ┌dacă d*d=n atunci ss+d
└■
c. Scrieți programul C/C++ corespunzător algoritmului scrie s
dat. (10p.)
d. Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind adecvat structura
cât timp...execută cu o structură repetitivă de alt tip. (6p.)
2. Pentru fiecare ingredient utilizat pentru prepararea unei prăjituri se memorează un cod și cantitatea
necesară. Codul reprezintă o literă, corespunzătoare numelui ingredientului: C pentru cacao, M pentru
miere etc. Variabilele cod1 și cantitate1 memorează codul și cantitatea corespunzătoare unui
ingredient, iar variabilele cod2 și cantitate2 memorează codul și cantitatea corespunzătoare unui alt
ingredient. Știind că ingredientele sunt în cantități diferite, scrieți o secvență de instrucțiuni în urma
executării căreia să se afișeze pe ecran codul ingredientului din care este necesară o cantitate mai
mare, urmat, pe linia următoare, de numele acestuia, dacă este miere sau cacao, sau de mesajul
altceva dacă este un alt ingredient. (6p.)
3. Știind că unul dintre cele trei elemente ale tabloului A are valoarea 45 și două dintre elementele
tabloului B au valorile 21, respectiv 52, scrieți câte un exemplu de valori pentru elementele tabloului A,
respectiv ale tabloului B, în ordinea în care ele pot apărea în fiecare tablou, astfel încât, prin metoda
interclasării descrescătoare a acestora, să se obțină tabloul unidimensional (52,45,44,21,10,5,2).
(6p.)

SUBIECTUL al III-lea (30 de puncte)


1. Se citesc două numere naturale, b și n (b[2,10], n[0,10 ]) și se cere să se afișeze suma tuturor
9

produselor de forma c∙bk, unde c este cifra de pe poziția k în scrierea numărului n; pozițiile sunt
numerotate de la dreapta la stânga, iar cifra unităților este pe poziția 0.
Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate.
Exemplu: dacă b=2 și n=10010, se scrie numărul 18 (18=1∙24+0∙23+0∙22+1∙21+0∙20). (10p.)
2. Scrieți un program C/C++ care citește de la tastatură un număr natural, n (n [2,20]), și cele n
elemente ale unui tablou unidimensional, numere reale pozitive. Programul transformă tabloul în
memorie, înlocuind fiecare număr real cu partea întreagă a acestuia.
Exemplu: pentru n=10 și tabloul (10, 20.64, 25, 40.45, 50, 80.21, 40.56, 1.2, 10.6, 5)
se obține tabloul (10, 20, 25, 40, 50, 80, 40, 1, 10, 5) (10p.)
3. Fișierul bac.txt conține un șir de cel mult 106 numere naturale din intervalul [0,103], separate prin
câte un spațiu. Se cere să se afișeze pe ecran suma maximă obținută adunând numai numere pare de
pe poziții consecutive în șirul aflat în fișier. Proiectați un algoritm eficient din punctul de vedere al
memoriei utilizate și al timpului de executare.
Exemplu: dacă fișierul bac.txt conține valorile 10 115 1 5 2 2 2 4 7 3 100 20 2 7
se afișează pe ecran numărul 122
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Probă scrisă la informatică Testul 20


Limbajul C/C++
Filieră teoretică, profil real, specializare științe ale naturii
Pagina 2 din 2

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