Sunteți pe pagina 1din 2

Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare

EXAMENUL DE BACALAUREAT – 2007


Proba scris la INFORMATIC
PROBA E, limbajul C/C++
Varianta 72

♦ Toate subiectele sunt obligatorii. Se acord 10 puncte din oficiu.


♦ Timpul efectiv de lucru este de 3 ore.
♦ În programele cerute la subiectele II i III, identificatorii utiliza i 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 ).

SUBIECTUL I (40 de puncte)


Pentru fiecare din itemii de la 1 la 8, scrie i pe foaia de examen litera corespunz toare
r spunsului corect. Fiecare r spuns corect se noteaz cu 5 puncte.
1. Se genereaz✂ în ordine cresc✂toare toate numerele de 4 cifre, care se pot forma cu elementele
mul imii {0,1,2,3,4}. Primele solu ii generate sunt, în ordine,
1000,1001,1002,1003,1004,1010,1011,1012…. S✂ se precizeze num✂rul anterior ✁ i cel
urm✂tor secven ei de numere consecutive: 3430,3431,3432,3433
a. 3421 i 3440 b. 3424 i 3440 c. 3421 i 3434 d. 3424 i 3434
2. Preciza i care dintre nodurile grafului orientat a c✂rui matrice 0 1 0 0 0 0 0 0
de adiacen ✂ este reprezentat✂ al✂ turat, au gradul interior egal 0 0 1 0 0 0 1 0
cu gradul exterior. 0 0 0 1 1 1 0 0
0 0 0 0 0 0 1 0
0 0 0 1 0 0 1 0
0 1 0 1 1 0 0 0
1 0 1 0 0 1 0 0
0 0 0 0 0 0 0 0
a. 1, 2, 5, 7, 8 b. 1, 2, 5, 6, 8 c. 2, 5, 6, 7, 8 d. 1, 2, 5, 7, 6
3. Fie variabilele reale a, b ✁ i x cu a <= b. Care dintre urm✂toarele expresii logice este adev✂rat✂, dac✂
✁ i numai dac✂ x ∉ [a, b] ?

a. (x >= a) || (x <= b) b. (x > a) && (x < b)


c. !(x >= a) || !(x <= b) d. (x >= a) && (x <= b)
4. Care este cea mai mare valoare ini ial✂ a a = 5;
variabilei întregi ind, pentru care urm✂ toarea do
secven ✂ de program va afi✁ a exact un caracter { printf(”*”); |cout << ’*’;
’*’ ? ind++;
} while (a <= ind);
a. 5 b. 4 c. 6 d. 3
5. Ce valoare va avea variabila întreag✂ s, în urma void Suma(int i, int &s)
apelului Suma(1, s), ✁ tiind c✂ variabila global✂ { if (i <= n)
n are valoarea 10, variabila s are înainte de apel { if(i % 2) s = s + 2;
valoarea 0, iar subprogramul Suma este definit else s = s – 1;
Suma(i + 1, s);
al✂ turat?
}
}
a. 8 b. 5 c. 7 d. 6
6. De câte ori se va executa for (i = 1; i < n; i++)
instruc iunea de decizie din for (j = i; j < n; j++)
secven a de program if (j % i == 0)
al✂ turat✂, dac✂ valoarea printf(”%d%d”, i, j); | cout<<i<<j;
variabilei întregi n este 8?
a. 16 b. 38 c. 28 d. 36
7. Dac✂ variabila a este o matrice p✂tratic✂ de n linii ✁ i n s = 0;
coloane cu elemente numere reale, atunci secven a for(i = 1; i <= n; i++)
de instruc iuni al✂turat✂ , calculeaz✂ în variabila real✂ s = s + a[i][i];
s, suma:
a. elementelor matricei b. elementelor de pe diagonala principal✂
c. elementelor de sub diagonala principal✂ d. elementelor de pe diagonala secundar✂

INFORMATIC✄, limbajul C/C++ 1 Varianta 72


Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare

8. Specifica i care este num✂rul maxim de muchii care pot fi


eliminate din graful al✂turat, astfel încât acesta s✂-✁ i men in✂
proprietatea de graf hamiltonian

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

SUBIECTUL II (20 de puncte)


Se consider programul pseudocod al turat:
cite te n (nr natural de
cel mult trei cifre)
1. Ce se va afi✁ a în urma execut✂ rii secven ei pseudocod
al✂turat✂ , dac✂ pentru num✂ rul natural n se cite✁ te valoarea ┌pentru i 1,n execută
│ cite te ai (nr. natural)
8, apoi cele opt componente ale vectorului a citite de la
└■
tastatur✂ sunt în ordine: 0, 1, 3, 3, 5, 6, 4, 8. (7p.) s 0
2. Pentru n = 5 scrie i un alt set de valori pentru componentele ┌ pentru i 1,n execută
✁ irului, astfel încât variabila s s✂ aib✂ valoarea 0, în urma │ ┌dacă ai = i atunci
execut✂rii algoritmului. (3p.) │ │ ai ai + i
│ │altfel
3. Scrie i programul C/C++ corespunz✂tor algoritmului dat. (8p.) │ │ s s + 1
│ └■
4. Înlocui i în secven a de pseudocod expresia ai = i cu o alt✂ └■
expresie, astfel încât variabila s s✂ afi✁ eze num✂rul de scrie s
componente pare ale ✁ irului. (2p.) pentru i 1, n execută
scrie ai

SUBIECTUL III (30 de puncte)


1. Se cite✁ te de la tastatur✂ un num✂r natural n (0 < n < 100) apoi n*n valori din mul imea {1,0}, care
se memoreaz✂ într-o matrice cu n linii ✁i n coloane. S✂ se afi✁eze pe ecran num✂rul de ordine al liniei,
care con ine cel mai mare num✂r de cifre de 1. Dac✂ dou✂ sau mai multe linii con in acela✁i num✂r de
cifre de 1, se va afi✁a numai num✂rul de ordine al primei dintre aceste linii.
Pentru n = 4 ✁ i matricea 0 1 0 0 se va afi✁a 2
1 0 1 1
0 1 0 1
0 1 1 1 (10p.)
2. a) Scrie i un subprogram cu numele Divide care s✂ primeasc✂ un num✂r natural nenul n ca
parametru ✁ i returnez✂ prin intermediul parametrilor a ✁ i b, puterea la care apare 2 ✁ i respectiv 5 în
descompunerea în factori primi a num✂rului n. De exemplu pentru num✂ rul n=150 în urma apelului
subrogramului valoarea parametrului a va fi 1 iar a parametrului b va fi 2. (6p.)
b) Scrie i programul care cite✁ te de la tastatur✂ trei numere naturale nenule x, y ✁ i z, ✁ i afi✁ eaz✂ pe
ecran num✂ rul de zero-uri cu care se termin✂ produsul numerelor citite folosind apeluri ale
subprogramului Divide.
De exemplu pentru numerele 4, 375, 400 se va afi✁a valoarea 5. (4p.)
3. Pe prima linie a fi✁ ierului text BAC.IN se afl✂ un num✂r natural n (0 < n <= 1000), iar pe a doua linie
n numere reale pozitive, desp✂r ite prin câte un spa iu. Scrie i programul C/C++ care cite✁ te datele
din fi✁ ierul de intrare ✁ i scrie în fi✁ ierul text BAC.OUT pe o linie, desp✂r ite prin câte un spa iu,
numerele care au partea întreag✂ num✂r prim. Dac✂ nici unul din numere nu are partea întreag✂
num✂ r prim atunci se va scrie în fi✁ ierul BAC.OUT mesajul NU EXISTA
De exemplu, dac✂ BAC.IN con ine
6
12.095 31.567 5.789 789.834 1234.923 2.345
atunci fi✁ ierul BAC.OUT va con ine
31.567 5.789 2.345 (10p.)

INFORMATIC✄, limbajul C/C++ 2 Varianta 72

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