You are on page 1of 15

Fisier original: Programare Procedurala Grila rezolvari 2009 semestrul I.

pdf
Modificat si simplificat in .doc.

1.Fie expresiile A = 18 - 3 +2; B = 18 + 7 / 3 +2; C = 2.3 + 3%; D = 3 + 7.0/3; E = 3 + 4 % 2.3; F = 24


% (7 + 1);
Care din aceste expresii sunt corecte?
b. A, B, D, F

2. Care este valoarea expresiei 20 / 10 * 2 + 30 / 15 * 2


c. 8

3. Care este valoarea expresiei: 4000/10/10*2+4*10*10 / 2


b. 280

4. Se considera secventa:
{ int a =82, b = 24;
a = a % 2 + b / 2 / 2;
b = 2 * a % 2;
a = a + b;
b = a % 2 + b + 10 % 2;
}
Care sunt valorile finale ale variabilelor a si b?
d. a = 6, b = 0

5. Care este ordinea de executare a instructiunilor urmatoare pentru ca in final variabilele


intregi x, y si z sa aiba valori egale, indiferent de valorile lor initiale:
{
/* 1 */ x = x / 10;
/* 2 */ z = x / y;
/* 3 */ x = 100;
/* 4 */ y = x / 10;
}
b. 3,4,2,1

6. Care din operatiile urmatoare atribuie variabilei float x media aritmetica a valorilor intregi
a, b si c?
a. x = (a + b + c) /3;

7. Care sunt valorile variabilelor intregi x si y dupa executarea in ordine a urmatoarelor trei
instructiuni:
{
x = 0x3;
y = x + 0x3;
x = x - 3;
}
d. x= 0 si y = 6
8. Care sunt valorile variabilelor intregi a si b dupa executarea instructiunilor urmatoare:
{ a = 1235; b = a % 10;
if ((a-b) % 10 == 0) { a = a / 100; b = a % 100;}
if (a == b) a = a *100;
}
d. a = 1200 si b = 12

9. Care sunt valorile finale ale variabilelor intregi x, y si z dupa executarea operatiei de decizie,
if (x>1 && y-z>0) x = y-z;
else {y = x-1; z = y+x;}
daca initial x = 23, y = 14 si z = 25?
c. x = 23, y = 22, z = 45

10. Ce va fi afisat pe ecran in urma instructiunii printf(“%6.3f\n”, 45.23); ?


b. 45.230

11. Stabiliti care dintre urmatoarele declaratii de variabile sunt corecte:


1) float 1t, 2t;
2) int a[1..10];
3) int x, y;
4) string s;
5 ) double e; v;
b. 3)

12. Daca a, b sunt variabile de tip int, iar x si y sunt variabile de tip float, stabiliti care dintre
urmatoarele secvente
de atribuiri sunt incorecte:
1) b = 2; a = b/2;
2) x = 8; y = 10; a == x+y;
3) x = 4; b = 2; y = x/b;
4) x == 20; y == 10; x =(x+y)/2;
5) a = b = 5; x = a+b;
d. 2, 4

13. Care dintre urmatoarele declaratii sunt corecte sintactic:


1) int ab=30;
2) int a+b;
3) float a1;
4) char 2ab;
5) int m.n;
c. 1, 3

14. Fie definitia:


int a = 5, b = 3, c = 1, d = 3;
Care dintre urmatoarele expresii logice au valoare 1 (adevarat):
1) a < b || c)
2) (b == d && c || a >= b)
3) (c && d > b)
4) a > b || !(d<a)
5) (a == b) && c
d. 1, 2, 4

15. Determinati valoarea expresiei fabs(-11.2) + sqrt(floor(16.23)).


d. 15.2

16. Determinati valoarea expresiei ((int)fabs(-14.2)) % 7


c. 0

17. Considerand variabila x de tip float si v riabila de tip int a, care va fi secventa de
caractere afisate in urma
executarii secventei de instructiuni(s inseamna un spatiu):
x = -4.3;
a = (int)fabs(-4.0);
printf(“%2d%4.2f%2d”, a, fabs(x), (int)ceil(a+x));
c. s44.30s0

18. Care vor fi valorile variabilelor intregi a si b dupa executarea urmatoarelor


instructiuni:
{if (a = 10, b = a+1, a != b) b++; else a++; a*=b;}
b. a = 120, b = 12

19. Care dintre urmatoarele secvente de instructiuni determina, in mod corect maximul a
trei numere?
1) if (a>b && a >c) max = a; else if (b > a && b > c) max = b; else max = c;
2) if (a>b) if (a>c) max = a; else max = c; else m x = b;
3) if (a>b) if (a>c) max = a; else if (b>c) max = b; else max = c;
4) if (a>b) if (b>c) max = b; else max = c; else m x = a;
b. 1, 3

20. Pentru definitia alaturata a functiei ex(), stabiliti ce se afiseaza la apelul ex(120)?
void ex(int x){
if (x != 0){
printf(“%d”, x %10);
ex(x/10);
}
}
c. 021

21. In secventa urmatoare de instructiuni, n si y sunt variabile intregi.


{n=156; y = 770;
while(n*y > 0) if (n >y) n = n%y; else y = y%n;
y = y+n;
}
Valoarea variabilei y la finalul executarii secventei este:
c. 2

22. Pentru un tablou x declarat global, cu 10 componente intregi, stabiliti care sunt valorile
memorate de componentele tabloului x in urma apelului ex(0, 9), daca functia ex este definita astfel:
void ex(int i, int j){
if(i <= j) {
x[i] = i; x[j] = j; ex(i+1, j-1);
if (i % 2 != 0) {x[i]=j; x[j]=9-x[i];}
}
}
b. (0, 8, 2, 6, 4, 5, 3, 7, 1, 9)

23. Se considera ca declaratia


struct patrat { float latura, aria;} p;
defineste in C patrate caracterizate prin latura si arie. Care din urmatoarele expresii atribuie
campului aria al variabilei p valoarea ariei patratului respectiv?
c. p.aria = p.latura * p.latura;

24. Care dintre urmatoarele expresii are valoarea 1 daca si numai daca numarul natural c este un
multiplu comun numerelor naturale nenule (unsigned int) a si b?
c. (c%a == 0) && (c%b ==0)

25. In secventa urmatoare, variabilele n, x si y sunt de tip intreg.


{x = 1; y = x-1;
do{
y=x*(x-1)+y;
x++;
}while(x <=n);
}
Daca valoarea variabilei n este un numar naural nenul, de cate ori este evaluata expresia logica x
<= n in timpul executarii secventei?
a. de n ori

26. Fie secventa de instructiuni:


{x=x-1; y=2*x+y; x=2*x+1;}
Care au fost valorile variabilelor x si y, de tip int, la inceputul executarii secventei de instructiuni
date, daca la finalul executarii x are valoarea 2007 iar y are v loarea 2009.
c. x = 1004 si y = 3

27. Se considera secventa:


{int a = 5, b = 0;
do {
a--; b +=a*a;
}while(a!=0);
}
Ce valori vor avea variabilele a si b la finalul executarii secventei?
d. a = 0 si b = 30

28. Functia revers(v, p, q) inverseaza ordine elementelor din tabloul unidimensional v aflate
pe pozitiile p, p+1,..., q-1, q (se presupune ca p <= q). Care dintre urmatoarele secvente de program
inverseaza doar prdinea
elementelor v[p] si v[q]:
b. revers(v, p, q); revers(v, p+1, q-1);

29. Fie v un tablou unidimensional format din n numere intregi (n >=2). Stiind ca primul element
din tablou se afla pe pozitia 1 (pozitia 0 este utilizata in alte scopuri), indicati care dintre
urmatoarele secvente atribuie variabilei intregi max cea mai mare valoare din tabloul v:
b. for(int i=2; i<=n; i++)if(v[i-1]>v[i]) v[i] = v[i-1]; max = v[n];

30. Fie v un tablou unidimensional format din n componente intregi, numerotate de la 1 la n


(pozitia 0 are alta semnificatie), iar p si k doua variabile de tip intreg. In care dintre urmatoarele
secvente variabilei p i se atribuie prima valoare strict pozitiva din tabloul v, daca exista o astfel de
valoare, sau 0 in caz contrar?
b. {p = 0; k = n; while(v[k]<=0) k--; p = v[k];}

31. Care dintre urmatoarele reprezinta o decl ratie corecta pentru o variabila x care memoreaza
simultan numele si media a maximum 30 de studenti?
d. struct {char nume[30]; double media;} x[30];

32. Care dintre urmatoarele secvente calculeaza suma elementelor de pe linia k a unei matrice a, cu
m linii (numerotate de la 1 la m; linia de indice 0 este utilizata in alte scopuri) si n coloane
(numerotate de la 1 la n; coloana de indice 0 este utilizata in alte scopuri)?
d. s = 0; i=1; while(i<=n) {s+=a[k][i]; i++;}

33. Fie instructiunea:


if (x>y) if (y>z) if(z>x) s = x+y+z; else p = x*y*z;
O secventa de instructiuni echivalenta cu aceasta, dar care foloseste o
singura data cavantul cheie if, este:
d. if(x>y && y>z) p = x*y*z;

34. Care dintre secventele de mai jos conduce la memor rea in variabila max a celei mai mari
dintre cele n valori intregi retinute in tabloul unidimensional a (in c re a[0] este primul element)?
b. for(i=0; i<n-1; i++) if (a[i] > a[i+1]) {max = [i]; a[i] = a[i+1]; a[i+1] = max;}
max = a[n-1];
d. max=0; for (i=0; i<n; i++) if a([i]>max) a[i]=m x;

35. Care dintre expresiile de mai jos va avea valoarea 1?


c. ‘a’ < ‘b’

36. Variabile a si b sunt declarate astfel: char a[20,b[20]; Ce se afiseaza in urma executarii
secventei urmatoare:
{
strcpy(a, “examen20”); strcpy(b, “08”);
printf(“%s%s”, strcat(a, “*”), b);
}
a. examen20*08

37. Algoritmul urmator testeaza daca sirul de caractere s este palindrom (citit atat de la stanga la
dreapta, cat si de la dreapta la stanga, se obtine acelasi sir de car ctere).
{i=0; j=strlen(s)-1;
while(i<j && s[i]==s[j]) {i=i+1; j=j-1;}
if(...) printf(“palindrom”; else printf(“nu este palindrom”);
}
Care este expresia care poate inlocui punctele de suspensie astfel incat algoritmul sa fie corect?
b. i>=j

38. Dintre tipurile simple de date face parte tipul:


a. double

39.Fie secventa:
a = 99; while (a >=1) {printf(“%d\n”, a); a=a-2;}
Prin executarea acesteia se afiseaza:
b. numerele naturale impare mai mici ca 100

40.Fie secventa:
{char c; for c=’A’; c <=’Z’; c++) printf(“%d”, c);}
Prin executarea acesteia se obtin:
b. numerele naturale din intervalul [65, 90]

41. Parametrii utilizati la apelul unei functii, se numesc:


c. parametri actuali

42.Se considera programul


#include <stdio.h>
void aplic(int x, int *y){x+=3; (*y)-=2; printf(“%d, %d”, x, *y);}
void main(void){int x=12, y=20; aplic(x, &x); printf(“,%d,”,x);
printf(“%d,”,y);aplic(y,&y); }
Ce se va afisa in urma executarii acestuia:
b. 15,10,10,20,23,18
43.Fie secventa:
for(j=1; j<=5; j++) for (i=1; i<=3; i++) a[i][j] = i+j;
Prin executarea acesteia, tabloul a va avea urmatorul continut
c.2 3 4 5 6
34567
45678

44. Prototipul corect al unei functii care primeste doua numere intregi ca primi doi
parametri (de intrare) si determina media aritmetica si produsul celor doua numere, pe care le
transmite apelantului prin urmatorii doi parametri este:
c. void calcul (int, int, double *, int *);

45. Fie declaratiile:


int a[5] = {1, 2,4, 3, 5};
int b[4] = {4, 2, 1, 3};
atunci a[b[0]] este:
c. 5

46.Se considera tabloul unidimensional


int a[5]={1, 2, 3, 4, 5};
si secventa de instructiuni
for(i=0; i<5; i++) {s=0; for(j=0; j<=i; j++) s+=a[j];
printf(“%d”,s);}
Care va fi rezultatul afisat in urma executarii secventei de mai sus?
d. 1361015

47.Fie tabloul unidimensional v si secventa


for (j = k; j>=q; j--) v[...] = v[j];
Cu ce expresie trebuie inlocuite punctele de suspensie astfel incat in urma executarii secventei
elementele
v[q], v[q+1], ..., v[k] sa se deplaseze cu p-1 vpozitii spre dreapta?
c. p-1+j

48. Se considera declararea


struct fractie {unsigned int x, y;} s, f1, f2;
in care campurile x si y reprezinta numaratorul, respectiv numitorul unei
fractii. Care dintre urmatoarele variante construieste in variabila s o fractie echivalenta cu suma
fractiilor f1 si f2?
c. {s.x = f1.x * f2.y + f1.y * f2.x; s.y = f1.y * f2.y;}

49.Care din urmatoarele secvente de instructiuni va afisa (cu un spatiu intre ele) in ordine
descrescatoare toate numerele naturale impare mai mici sau egale cu o valoare naturala data a?
c. for (i = a; i >= 1; i--) if (i % 2 != 0) printf(“%d ”, i);
50. Functia s (scrisa in limbajul C, standard) este utilizata pentru interschimbarea valorilor a doua
numere intregi, pozitive. Definitia corecta (in antet) a acesteia trebuie sa fie:
c. void s(unsigned int *, unsigned int *) { ... }

51. Pentru a atribui variabilei n o valoare egala cu lungimea unui sir de caractere w (ce respecta
conventia terminatorului de sir) se utilizeaza instructiunea:
d. n = strlen(w);

52. Care din urmatoarele variante reprezinta antetul corect al unei functii care primeste
parametri intregi a si b si intoarce prin cel de-al treilea parametru x, cea mai mare dintre cele
doua valori a si b?
d. void maxim (int a, int b, int * x){ *x = (a>b)? :b;}

53. Conditia ca doua numere intregi a si b sa fie ambele nenule este:


d. ! (a == 0 && b == 0)

54. Fie functia


void f( ... ) {a++; *b--; *c = a + *b;}
Se stie ca x, y si z sunt variabile intregi. Intitial x = 11 si y = 6, iar dupa apelul f(x, &y,
&z), valorile celor trei variabile sunt x = 11, y = 5 si z = 17. Care dintre urmatoarele constructii
reprezint antetul corect l functiei?
c. void f(int a, int *b, int *c)

55. Daca in cadrul unui program variabila p urmeaza sa memoreze simultan coordonatele
reale (abscisa si ordonata) pentru un punct in plan, atunci variabil p trebuie declarata astfel:
a. struct punct {float x, y;} p;

____ 56. Care este rezultatul tiparit de programul urmator?


#include <stdio.h>
#include <string.h>
void f(char s[], int);
void main(){f(“examenul”,0);}
void f(char s[256], int i){
if(i<strlen(s)) {
f(s, i+1);
if (strchr(“aeiou”, s[i]) != 0) printf(“%c”, s[i]);
}
}
c. ueae

57. Se defineste tipul struct punct {float x, y;}; (pentru a memora coordonatele carteziene -
abscisa si ordonata - ale unor puncte din planul xOy) si tabloul unidimensional a cu elemente de tip
struct punt. Care dintre expresiile de mai jos are valoarea 1 daca si numai daca punctul ale carui
coordonate sunt memorate in elementul din tabloul aflat pe pozitia i are abscisa si ordonata egale?
b. a[i].x == a[i].y

58. Variabila s a fos declarata prin: char s[32];


Ce se afiseaza dupa executarea urmatoarei secvente?
{
strcpy(s,”Programare procedurala”);
printf(“%c”, s[strlen(s)-3]);
}
c. a

59. Se considera tabloul unidimensional de intregi, notat cu a, in care a[0] = 4, a[1] = 2, a[2]
= 5, a[3] = 1, a[4]=3. Care va fi continutul sau dupa executarea secventei urmatoare (in care i si aux
sunt de tip int):
for (i = 0; i<4; i++) if (a[i] > a[i+1]){
aux = a[i]; a[i] = a[i+1]; a[i+1] = aux;
}
a. a[0] = 2, a[1] = 4, a[2] = 1, a[3] = 3, a[4]=5

60. Se considera tabloul unidimensional a = (0, 1, 3, 2). Care este tabloul unidimensional b
astfel incat pentru oricare 0 <= i <4 sa existe relatia a[b[i]] = b[a[i]]?
a. b = (0, 1, 2, 3)

61. Variabilele a si i sunt declarate astfel:


int a[100], i;
Care dintre urmatoarele instructiuni este corecta din punct de vedere sintactic?
a. a = i;

62. Se considera urmatoarea functie recursiva apelata numai pentru numere naturale
nenule:
int f(int a, int b){
if (a<b) return a; else return f(a-b, b);
}
Care dintre urmatoarele functii este echivalenta cu functia data?
c. int f(int a, int b){return a%b;}

63. Pentru un tablou bidimensional a cu 10 randuri si 10 coloane, stabiliti ce calculeaza


secventa de program urmatoare, in variabila s:
s = 0;
for (i = 0; i<10; i++) for (j = i; j <10; j++) s+= [i][j];
c. Suma elementelor situate deasupra diagonalei principale, inclusiv diagonala principala

64. Se considera programul C:


#include <stdio.h>
void F(int *a, int b){
b +=*a; (*a)*=b;
printf(“%d %d “, *a, b);
}
void main(void){
int x = 5, y = 7; F(&x, y);
printf(“%d %d“, x, y);
}
Ce se va afisa in urma executarii?
c. 60 12 60 7

65. Se considera secventa:


{int i, j;
for (i = 1; i<n; i++) for(j = i; j < n; j++) if (j%i == 0) printf(“%d%d”, i, j);
}
De cate ori se va executa instructiunea de decizie (marcata ingrosat: j%i == 0)
din secventa de program de mai sus daca valoarea initiala a variabilei intregi n este 8?
a. 16 d. 28
?

66. Se considera secventa de instructiuni:


{char a[]=”aabbddeff”;
char b[] =”aabbdeeff”’
if (strcmp(a, b) == 0) printf (“egalitate”); else printf(“%s “,b);
}
Care este rezultatul obtinut in urma executarii?
a. aabbdeeff

67. Fie v un tablou unidimensional cu n elemente de tip intreg, iar n un numar natural nenul
(n <=100) si secventa urmatoare:
{i=0;
while (i<n) {v[i] = i*i; i++;}
}
De cate ori se repeta instructiunea i++; in timpul executarii secventei date?
b. n ori

68.Se considera functia f al acarui prototip/antet este bazat pe:


void f(int a[100][100], int n, int m, int i, intj);
Functia precizata realizeaza interschimbarea liniilor i si j ale tabloului transmis prin parametrul
a, care are n linii si m coloane. Pentru a ordona crescator numerele de pe coloana a 3-a a tabloului
a, functia f se apeleaza in timpul executarii secventei:
for (i=0; i<n-1;i++)
for(j = i+1; j<n; j++)
if(a[i][3] >a[j][3]) f(a, n, m, i, j);
de un numar de ori egal cu:
d. cel mult n(n-1)/2
69. Consideram urmatoarea declaratie:
struct produs {char denumire[10]; int pret;} p;
Cum se poate accesa prima litera a denumirii unui produs ale carui caracteristici sunt memorate in
variabila p?
c. p.denumire[0]

70.Se considera urmatoarele declaratii:


int x[5] = {0, 1, 5, 3, 4};
int y, i;
si secventa de instructiuni:
{
y = x[1];
for (i = 0; i<=4; i++) if (y < x[i]) y = x[i];
printf(“%d”, y);
}
Ce se va afisa in urma executarii acestei secvente?
b. 5

71.Daca n este un numar natural (intreg pozitiv), ce realizeaza urmatoarea secventa?


{p=1;
while(n) {p *= n; n--};
}
c. Calculeaza in variabila p valoarea lui n!

72. Care dintre urmatoarele variante realizeaza deschiderea la citire a fisierului text
“A.TXT”
c. f = fopen(“A.TXT”, “r”);

73. Care dintre urmatoarele variante realizeaza deschiderea la scriere a fisierului text
“B.TXT”?
b. f = fopen(“B.TXT”,”w”);

74. Care dintre urmatoarele secvente au ca efect citirea unui caracter din fisierul “C.TXT”?
c. f = fopen(“C.TXT”, “r”); fscanf(f, “%c”, &x); fclose(f);

75. Considerand ca variabila f este de tip fisier (FILE *), care dintre urmatoarele instructiuni
verifica daca s-a la sfarsitul fisierului indicat de f?
b. if (feof(f)) printf(“final”); else printf(“mai este”);

76. Stiind ca fisierul “D.TXT” are urmatorul continut:


13 45 23
32 42 234
56 78
32 23 43
32 32 32 32
ce se va afisa in urma executarii programului urmator?
#include <stdio.h>
FILE *f; int x, y, z;
void main(){
f = fopen(“D.TXT”,”r”);
fscanf(f, “%d %d %d\n”, &x, &y, &z);
fscanf(f, “%d”, &z);
printf(“%d %d %d \n”, x, y, z);
}
d. 13 45 32

77. Stiind ca fisierul “E.TXT” are urmatorul continut:


1 2 3 4
67 34 23
567 546 677
1234 3234 4565 6564
12345 12445 12223
ce se va afisa in urma executarii programului urmator?
#include <stdio.h>
FILE *f, int x, y, z;
void main(){
f = fopen(“E.TXT”, “r”);
fscanf(f, “%d %d”,&x, &y);
fscanf(f, “%d\n”,&z);
printf(“%d %d %d \n”, x, y, z);
}
a. 123

78. Stiind ca fisierul “F.TXT” are urmatorul continut:


12345 12
93 16 32
8.023 322 21
0.823 21
0.21 213.12
ce se va afisa in urma executarii programului urmator?
#include <stdio.h>
FILE *f, char x, y, z;
void main(){
f = fopen(“F.TXT”, “r”);
fscanf(f, “%c”, &x);
fscanf(f,” %c”, &y);
while(getc(f) != ‘\n’);
fscanf(f, “%c”, &z);
printf(“%c %c %c \n”, x,y,z);
}
b. 129

79. Stiind ca fisierul “G.TXT” are urmatorul continut:


IaEaws
S,a.d sdll
-dsa
Xda dsa asd
da
sda sad
ce se va afisa in urma executarii programului urmator?
#include <stdio.h>
FILE *f; char x, y, z;
void main(){
f = fopen(“G.TXT”,”r”);
while(getc(f) != ‘\n’);
fscanf(f,”%c”, &x);
while(getc(f) != ‘\n’);
fscanf(f,”%c”, &y);
while(getc(f) != ‘\n’);
fscanf(f,”%c”, &z);
printf(“%c %c %c \n”, x, y, z);
}
c. S-X

80.Care va fi continutul fisierului “H.TXT” in urma executarii programului urmator?


#include <stdio.h>
FILE *f; char x, y, z;
void main(){
f = fopen(“H.TXT”,”w”);
fprintf(f,”Ieri %d\n”,13);
fprintf(f,”Azi %d”,14);
fprintf(f,”Maine %d\n”,15);
fclose(f);
}
d. Ieri
13 Azi 14 Maine
15

81. Se considera algoritmul:


1. citeste n; a = 0; b = 1; k = 2;
2. Cat timp k<n executa { scrie a, b; a = a+b; b = a+b; k = k+2;}
3. Daca k = n atunci scrie a, b; altfel scrie a.
Ce sir va calcula algoritmul pentru n = 7?
c. 0, 1, 1, 2, 3, 5, 8

82. Care din urmatoarele afirmatii este falsa?


c. 2la puterea n = O(n)

83. Se considera algoritmul:


procedure insert_sort(n, x);
integer n;
integer array x(n);
integer i, j, temp;
SEQ
for i = 2, n, 1 do
SEQ
temp := x[i];
j := i-1;
while ( j>=1) and (x[j] > temp) do
SEQ
x[j+1] := x[j];
j := j-1;
END
x[j+1] := temp
END;
return
END
Complexitatea algoritmului (la nivelul numarului de comparatii efectuate) este:
c. O(nla2)

84. Care dintre urmatoarele formule de corectitudine logica este falsa?


d. {true} if x>y then SEQ t:=x; x:=y; y:=t END {x >y}

85. Se considera algoritmul:


integer m, n, x, y;
SEQ
read m, n ;
if (x>0) and (y>0) then
SEQ
x:=m; y:=n;
while x <> y do if x>y then x:=x-y else y:=y-x;
write x
END
END
Care este proprietatea invarianta a buclei while?
c. (cmmdc(x, y) = cmmdc(m, n)) and (x>0) and (y>0)

86. Se considera definitia


void f(int n){
int j;
if (n>0) for (j=1; j<=n; j++) {printf(“%d”,j); f(n-1);}
}
Ce se afiseaza ca urmare a apelului f(2)?
d. 1121

87. Variabila p este declarata astfel:


int *p;
Stiind ca p retine adresa unei variabile de tip int, care dintre urmatoarele instructiuni
afiseaza valoarea respectivei variabile intregi?
b. printf(“%d”,*p);

89. Se considera definitia


long f(int n, int k){
if (n == k || k == 1) return 1;
if (n < k) return 0;
long s=0, i;
for (i=1; i<=k; i++) s+=f(n-k,i);
return s;
}
Stabiliti ce valoare returneaza apelul f(6,3).
a. 3

90. Se considera definitia:


long f(int x, int y){
if (x == y || x == 0) return 1;
else return f(x,y-1)+f(x-1,y-1);
}
Ce valoare returneaza apelul f(8,10)?
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de dezvoltarea
software-ului).
b. 45

93. Stiind ca p este un vector (tablou unidimensional) cu 3 componente intregi (tabloul este
declarat global), M este multimea tuturor cifrelor nenule, iar functia tipar afiseaza valorile
elementelot p[0], p[1] si p[2], cu ce trebuie inlocuite simbolurile a, b si c in definitia functiei G astfel
incat in urma apelului G(0) sa se afiseze toate elementele produsului cartezian MxMxM?
void G(int k){
int i;
for (i = a; i<=b; i++) { p[k] = i; if (k == c) tipar(); else G(k+1);}
}
d. a = 1, b = 9, c = 2

94. Se considera un tablul unidimensional in care elementele sunt in ordinea: 1, 3, 5, 7, 10, 16,
21.Pentru a afla pozitia pe care se afla valoarea x = 10 se aplica metoda cautarii binre. Care este
succesiunea de elemennte care astepau valoarea lui x:.
b. 7, 16, 10

You might also like