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 59
♦ 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. Cu ce expresie trebuie înlocuite punctele de
suspensie astfel încât programul pseudocod p …
al✂ turat s✂ memoreze în variabila p produsul
☎
✝
pentru i=1,10 execut ✆
celor 10 numere întregi negative citite? ✝
cite ✞te x (num✂ r întreg, x<0)
✟
p p*x
✠
scrie p
a. 0 b. 10 c. 1 d. -1
2. Matricea mat are m linii ✁ i n coloane, atât liniile cât ✁ i coloanele sunt numerotate începând de la 1 ,
iar c este un num✂r natural nenul mai mic sau egal cu n. Care dintre urm✂toarele secven e de
instruc iuni calculeaz✂ în variabila s suma elementelor coloanei c a matricei mat?
a. s=0; for(i=1;i<=m;i++) s=s+mat[i][c];
b. s=0; for(i=1;i<=n;i++) s=s+mat[c][i];
c. s=0; for(i=0;i<n;i++) s=s+mat[i][c];
d. s=0; for(i=1;i<=m;i++) s=s+mat[i][j];
3. Considerând un graf neorientat G cu 5 noduri dat prin matricea 0 1 1 0 1
de adiacen ✂ al✂turat✂, stabili i care dintre urm✂ toarele 1 0 1 0 0
afirma ii este adev✂rat✂ : 1 1 0 0 0
0 0 0 0 1
1 0 0 1 0
a. G este aciclic b. G este conex
c. G este eulerian d. G este hamiltonian
4. Dac✂ se utilizeaz✂ metoda backtracking pentru a genera toate permut✂rile mul imii {a,b,c,d} ✁i primele
solu ii afi✁ate sunt dcba,dcab,dbca, atunci penultima solu ie este:
a. acdb b. dcab c. abcd d. abdc
5. Pentru defini ia al✂turat✂ a subprogramului f, void f(int n){
ce se va afi✁ a la apelul f(27524)? if(n){
if(n%2){
printf("%d",n%10);/cout<<n%10;
f(n/10);}
else{f(n/10);
printf("%d",n%10);/cout<<n%10;}
}
}
a. 27524 b. 75422 c. 57224 d. 42572
6. Dou iruri de caractere s i t au lungimile egale dac i numai dac :
✂ ✁ ✁ ✂ ✁ ✂
a. strlen(s)==strlen(t) b. s==t
c. s[0]==t[0] d. strcmp(s,t)==0
7. Într-o list✂ circular✂ simplu înl✂ n uit✂ , cu cel pu in un element, fiecare nod re ine în câmpul adr
adresa elementului urm✂tor din list✂ . Dac✂ p este o variabil✂ care re ine adresa primului element din
list✂, iar q este o variabil✂ care poate s✂ re in✂ adresa unui element din list✂, care dintre urm✂toarele
secven e de instruc iuni calculeaz✂ în variabila nr, de tip int, num✂rul de elemente ale listei?
a. nr=0;q=p;while(q!=p){nr++;q=q->adr;}
b. nr=0;q=p;do{nr++;q=q->adr;}while(q!=p);
c. nr=0;q=p;do{nr++;q=p->adr;}while(q!=p);
d. nr=0;q=p;while(p!=q){nr++;p=p->adr;}
INFORMATIC✄, limbajul C/C++ 1 Varianta 59
Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare
8. Care dintre urm✂toarele expresii logice este echivalent✂ cu conditia ca variabilele întregi pozitive a ✁ i
b s✂ fie ambele pare sau ambele impare?
a. (a+b)%2==0 b. a%2==0||b%2==0
c. a%2 && b%2 d. !(a*b%2)
SUBIECTUL II (20 de puncte)
Se consider✂ programul pseudocod al✂ turat în care s-a
folosit nota ia [x] pentru partea întreag✂ a lui x. cite ✞te n (num✂ r natural nenul)
t 1
1. Ce se va afi✁ a pentru n=4357? (5p.) c n%10
n [n/10]
2. Scrie i o valoare de patru cifre pentru variabila n astfel ☎cât timp t=1 ✞i n>0 execut ✆
✝
încât rezultatul afi✁ at s✂ fie 1. (3p.) ☎
dac ✆ n%10>c atunci
✝ ✝
✝ ✟
t 0
✠
✝
✝
c n%10
✟✠
n [n/10]
scrie t
3. Câte numere naturale nenule de cel mult dou✂ cifre pot fi introduse pentru variabila n, s✂ se
afi✁ eze 1 pentru fiecare caz în parte. (2p.)
4. Scrie i programul C sau C++ corespunz✂tor algoritmului dat. (10p.)
SUBIECTUL III (30 de puncte)
1. Scrie i un program C/C++ care cite✁ te un num✂ r natural nenul n (n<100) ✁ i un ✁ ir de n numere
naturale nenule de cel mult 4 cifre fiecare, ✁ i care afi✁ eaz✂ pe ecran ✁ irul ordonat cresc✂ tor în
func ie de suma cifrelor corespunz✂toare fiec✂rui termen al s✂ u. Dac✂ dou✂ numere au aceea✁ i sum✂
a cifrelor, se va afi✁ a mai întâi cel mai mic dintre ele.
De exemplu, pentru n=5 ✁ i numerele 701,1000,44,99,143, se va afi✁ a sirul:
1000 44 143 701 99 (10p.)
Pentru orice num✂r natural nenul n definim n factorial, notat n!, ca fiind produsul tuturor numerelor
2.
naturale nenule mai mici sau egale cu n (n!=1*2*...*n).
De exemplu: 3!=1*2*3=6, 5!=1*2*3*4*5=120
a) Descrie i în limbaj natural o metod✂ eficient✂ de determinare a num✂rului de cifre nule aflate pe
ultimele pozi ii consecutive ale valorii ob inute în urma evalu✂rii lui n!, n fiind un numar natural nenul
de cel mult 4 cifre. De exemplu, dac✂ n=10, cum 10!=3628800, rezultatul va fi 2, deoarece
3628800 are doi de 0 la sfâr✁ it. (2p.)
b) Scrie i un program C/C++ corespunz✂tor metodei descrise la punctul anterior, care cite✁ te de la
tastatur✂ un num✂r natural nenul n de cel mult 4 cifre ✁ i afi✁ eaz✂ pe ecran num✂rul de cifre nule aflate
la sfarsitul lui n!. (8p.)
Scrie i un program C/C++ care cite✁ te din fi✁ ierul text [Link], cel mult 100 de numere naturale
3.
nenule aflate pe o singur✂ linie, formate din cel mult patru cifre fiecare, separate prin spa ii ✁ i scrie
aceste numere în fisierul text [Link], în ordine invers✂ fa ✂ de cea în care fost citite, pe o singur✂
linie, separate prin spa ii. De exemplu, dac✂ din fi✁ ierul [Link] se citesc numerele: 93 207 15
1892 3762, atunci con inutul fi✁ ierului [Link] va fi: 3762 1892 15 207 93 (10p.)
INFORMATIC✄, limbajul C/C++ 2 Varianta 59