Sunteți pe pagina 1din 53

1. Care din urmatoarele actiuni au loc la compilare?

a) analiza lexicala b)includerea fisierelor header c) definirea constantelor simbolice d)analiza sintactica e) generarea codului obiect f)editarea de legaturi

2. Fisierele header, furnizate alaturi de biblioteci de module cod obiect, impreuna cu un compilator, contin: a) definitiile functiilor de biblioteca b) macro-definitii c) prototipurile functiilor de biblioteca

3. La preprocesarea unui fisier sursa C a) se includ functiile de biblioteca b) se obtine o noua versiune a textului sursa c) se obtine codul obiect

4. In conditiile de mai jos #define PI int r; valoarea expresiei 2 * PI * r este de tip a) int b) float c) double d) long 3.14

5. Daca variabila r este declarata de tipul float, in conditiile definitiilor #define PI 3.14 2*PI*raza

#define perimetru(raza)

valoarea expresiei perimetru(r) este de tip a) int b) float c) double d) long

6. Urmatoarea macrodefinitie #define swap(a,b) {a=a^b; b=a^b; a=a^b;} poate fi apelata ca swap(x, y); a) numai daca x si y sunt variabile de tip real b) numai daca x si y sunt variabile de tip intreg c) daca x si y sunt constante intregi d) indiferent de ce tip numeric sunt variabilele x si y

7. Urmatoarea macrodefinitie #define swap(a,b) {a=a+b; b=a-b; a=a-b;} poate fi apelata ca swap(x, y);

a) numai daca x si y sunt variabile de tip real b) numai daca x si y sunt variabile de tip intreg c) daca x si y sunt constante intregi d) indiferent de ce tip numeric sunt variabilele x si y

8. In conditiile #define swap(a,b) {int aux; aux=a; a=b; b=aux;} float x=10.5, y=3.75; in urma apelului swap(x, y); valorile lui x, respectiv y vor fi a) x=3.75 si y=10.5 b) x=3.0 si y=10.5 c) x=3.75 si y=10.0 d) x=3.0 si y=10.0

9. In conditiile #define swap(a,b) {int aux; aux=a; a=b; b=aux;} float x,y; in urma apelului swap(x, y); rezultatul (interschimbarea valorilor lui x si y!) a) este corect b) nu este corect c) depinde de valorile lui x si y d) depinde doar de valoarea lui x

10. Ce este gresit in #define cub(x) x*x*x

a) cu o directiva define nu se pot defini decat constante simbolice b) parametrului x nu i s-a declarat tipul c) la apeluri de genul cub(a+b) rezultatul nu reprezinta, in general, cubul sumei (a+b)

11. Care din variante defineste corect si complet ce anume se specifica prin tipul unei date? a) Numarul de octeti ocupati b) Spatiul necesar reprezentarii si modul de reprezentare. c) Operatiile permise

12. Care din urmatoarele cuvinte rezervate denumesc tipuri de date intregi predefinite in C? a) char b) float c) short d) int e) long f) long double

13. Cum se numeste modul de reprezentare al datelor reale? a) virgula mobila b)complement fata de doi c) virgula fixa

14. Ce este o variabila? a) litera care tine locul unor valori (de ex. a, b, c sau x, y, z) b) o valoare care se schimba c) o zona de memorie identificabila in care se pot pastra valori

15. Ce caracteristica a unei variabile este precizata de clasa sa de memorare? a) locul unde poate fi folosita b) locul unde se creaza c) locul unde se vede 16. Care din urmatoarele clase de memorare se specifica implicit? a) static b) auto c) register d) extern

17. Ce reprezinta domeniul unei variabile: a) plaja de valori pe care le poate lua b) locul unde se creaza c) locul din textul sursa unde poate fi folosita d) daca are semn sau nu

18. Care este atributul care precizeaza unde (intr-un text sursa C) poate fi utilizat legal identificatorul unei variabile? a) domeniul b) durata de viata c) vizibilitatea d) clasa de memorare

19. Care din urmatoarele cuvinte rezervate denumesc tipuri de date reale predefinite in C? a) char b) float c) short d) double e) long f) long double

20. Cum se numeste modul de reprezentare al datelor intregi? a) virgula mobila b) complement fata de doi c) virgula fixa

21. Care atribut al unei variabile indica locul in care este creata varibila? a) domeniul b) durata c) clasa de memorare d) vizibilitatea

22. Stiind ca valorile datelor de tip intreg sunt cu semn, care va fi valoarea variabilei c dupa secventa: char c=130; a) 130 b) -126 c) \0 d) c

23. Declaratia register int i; detrmina crearea variabilei i: a) intr-un registru b) pe stiva c) depinde de context d) declaratia are ca efect inregistrarea variabilei!

24. Declaratia extern int val; a) este o declaratie de referire b) determina crearea variabilei c) anunta tipul variabilei val, declarata altundeva 25. O declaratie de referire a) creaza o variabila b) se face cu cuvantul rezervat extern c) anunta tipul unei variabile nedeclarate inca in respectivul fisier sursa d) precizeaza o referinta (adresa)

26. Domeniul identificatorilor de variabile globale tine din locul declaratiei pana la: a) sfarsitul blocului b) sfarsitul programului c) sfarsitul textului sursa d) sfarsitul functiei 27. Domeniul identificatorilor de variabile locale tine din locul declaratiei a) sfarsitul programului b) sfarsitul textului sursa c) sfarsitul functiei d) sfarsitul blocului 28. La executarea programului urmator se tasteaza 20. Ce se va afisa dupa executare ? #include <stdio.h> Void main() { Char a ; Scanf(% c, & a); Printf(%c,a);} a) 20 b) 2 c) 0 29.Care este durata de viata a variabilelor globale ? a) cat timp sunt utilizate; b)cateva minute; c) cat dureaza executia programului;

30.Care este durata de viata a variabilelor locale? a)cat timp sunt utilizate; b)cateva minute; c)cate dureaza executia subprogramului; d)depinde de clasa lor de memorare;

31.Daca se tasteaza caracaterul c ce afiseaza urmatorul program: #include <sddio.h> Void main(){ Char c; Int k; C=getchar() , k= c +257; Putchar ((char)k);} a) c b) b c) C d) d e) 257 f) 259

32. Care este ordinea de evaluare a expresiilor compuse, daca nu se folosesc paranteze? a) intotdeauna de la stanga spre dreapta b) intotdeauna de la dreapta spre stanga c) aleatoare d) in functie de precedenta operatorilor

33. Cand au loc conversii implicite de tip? a) la citrea datelor de intrare si la afisarea rezultatelor b) cand operanzii unei expresii au tipuri diferite

c) cand argumentul actual cu care se apeleaza o functie are alt tip decat argumentul formal corespunzator

34. Care din urmatorii operatori NU admit operanzi reali? a) operatorii de incrementare/decrementare b) operatorii logici c) operatorii logici pe biti d) operatorii de deplasare

35. Care din urmatorii operatori admit operanzi reali? a) operatorii logici pe biti b) operatorii de deplasare c) operatorii de incrementare/decrementare d) operatorii logici

36. Care este rezultatul numeric al evaluarii unei expresii relationale sau logice? a) FALSE sau TRUE b) 0 sau 1 c) 0 sau diferit de 0

37. Care din urmatoarele valori sunt adevarate din punct de vedere logic? a) \0 b) 0x80 c) 0 d) 280 e) 0.0 f) 3.14F

38. Care din urmatoarele valori sunt false din punct de vedere logic? a) \0 b) 0x1F c) 0 d) NULL e) 0.0 f) 1F _ 39. Date declaratiile int n=10, m=4; float x; valoarea expresiei x = 1.5 + n/m este a) 4.0 b) 3.5 c) de tip double d) de tip float

40. Date declaratiile int n=10, m=4; valoarea expresiei 1.5 + n/m este a) 4 b) 3.5 c) de tip double d) de tip float

41. Data declaratia float x=2.5; valoarea expresiei x=3.0*x + 10/4 este a) 10.0 b) 9.5 c) de tip double d) de tip float

42. Date declaratiile float x=2.5; valoarea expresiei 3.0*x + 10/4.0 este a) 10.0 b) 9.5 c) de tip double d) de tip float _ 43. Date declaratiile int n=200, m=200; long r; si presupunand ca sizeof(int) este 2 iar valorile tipurile intregi sunt implicit cu semn, valoarea expresiei r=n*m este: a) 40000 b) -25536 c) de tip long d) de tip int

44. Daca a este o variabila intreaga, care este valoarea expresiei (a < 'a') && (a > 'z') a) 1 b) 0 c) depinde de valoarea lui a

45. Daca a este o variabila intreaga, care este valoarea expresiei (a < 'a') || (a > 'z') a) 1 b) 0 c) depinde de valoarea lui a

46. Date declaratiile: int i, t[10]; valoarea expresiei ( i=0 ) && ( t[i]<0 ) a) este 1 b) este 0 c) depinde de valoarea lui t[i]

47. Date declaratiile: static int i, t[10]; si presupunand ca atat i, cat si t nu sunt initializati explicit, valoarea expresiei ( i==0 ) || ( t[i]<0 ) a) este 1 b) este 0 c) depinde de context

48. Date declaratiile variabilelor locale: int i, t[10]; si presupunand ca atat i, cat si t nu sunt initializati explicit, valoarea expresiei ( i==0 ) || ( t[i]<0 ) a) este 1 b) este 0 c) depinde de context

49. Date declaratiile variabilelor locale: int i, t[10]={0}; si presupunand ca i nu este initializat explicit, valoarea expresiei ( i==0 ) || ( t[i]==0 ) a) este 1 b) este 0 c) depinde de i

50. In conditiile in care c este declarata char c: valoarea expresiei c = getchar() != EOF a) este valoarea returnata de functia getchar b) este 0 c) este 1 d) este 0 sau 1

51. Presupunand ca adresele se reprezinta pe 4 octeti, cat spatiu de memorie se rezerva prin urmatoarele declaratii: extern long count; struct node { long key; struct node *next; }; a) 12 octeti b) 8 octeti c) 4 octeti d) nici un octet

52. Care este rezultatul evaluarii expresiei "0123456789"[i] daca i=9? a) expresia este gresita sintactic b) 9 c) 9 d) 8

53. Care este rezultatul evaluarii expresiei "0123456789"[i] daca i=0? a) expresia este gresita sintactic b) 0 c) 0 d) \0

54. Care este rezultatul evaluarii expresiei "0123456789"[i] daca i=10? a) expresia este gresita sintactic b) nedefinit c) \0 d) 9

55. Care este rezultatul evaluarii expresiei "0123456789"[10] a) expresia este gresita sintactic b) expresia nu are sens c) 9 d) 0

56. Care este rezultatul numeric al evaluarii exprresiei a<b<c daca a=-2, b=-1 si c=0? a) 1 b) TRUE c) 0 d) FALSE

57. Care este rezultatul numeric al evaluarii exprresiei a<b<c daca a=0, b=1, c=2? a) 1 b) TRUE c) 0 d) FALSE

58. Daca t este un tablou, ce reprezinta valoarea expresiei sizeof t /sizeof t[0] a) expresia este gresita sintactic b) expresia nu are sens c) numarul de elemente ale tabloului t d) numarul de octeti ocupati de t respectiv t[0]

59. Presupunanad ca sizeof(int) este 2, valoarea lui c, in urma executiei secventei urmatoare int a=100, b=400; long int c; c=a*b; a) este corecta b) este eronata c) este 40000 d) este -25536

60. Discutati (in functie de valorile lui a si b) rezultatul lui c dupa: int a, c; long b; c=a*b; a) rezultatul este intotdeauna corect b) rezultatul este intotdeauna eronat c) rezultatul este corect daca a*b se incadreaza in plaja de valori a tipului int

61. Care este valoarea expresiei ~0? a) 1 b) -1 c) 0xF

62. Care este valoarea expresiei ~1? a) 0 b) 0xE c) -2 63. Ce se va afia n urma execuiei secvenei urmtoare: #include <stdio.h> void main() { unsigned char x=10; x=~x; printf(%d,(int)x); } a) 245 b) 0 c) 255 64. Ce se va afisa in urma executiei secventei urmatoare:

#include <stdio.h> Void main() { Unsigned char x=25; x=x<<2; Printf(%d,(int)x);} a)27 b)100 c)23

65.Ce se afisa in urma executiei secventei urmatoare: #include <stdio.h> Void main() { Printf(%d , 10>20);} a)false b)error c) 0 d)1

66.Ce va afisa in urma executiei urmatoare : #include <stdio.h> Void main () { Int a=10/4; Printf(%d %d,a,-10 %4;} a)2,5 -3 b)2-2 c)2,5 2 d)2 3 e)error

67. Fie declaratiile : Long int x=5; char y=10; Care este valoarea expresiei x+y ? si care este tipul ei ? a)rezultatul este (char) 15; b)(long int) 15; c) nu se pot aduna;

68) Fie declaratiile : int x = 10, y = 20; Care este valoarea expresiei x+20 <= y+12 ? a)1 b)0 c) 14

69) Fie declaratiile: int x=10, y=20; Care este valoarea expresiei 10==x<y ? a) 0 b) 10 c)1

70) Fie declaratiile : integer x=10,y=20. Care este valoarea expresiei !x-y ? a)0 b)-10 c)-20

71)Fie declaratiile: int x=8, y=20. Care este valoarea expresiei x--/++y ? a)0 b)3 c)0.35 d)0.4 e)0.38095

72)Fie declaratiile: int x=-1, y=1. Care este valoarea expresiei (x&&y)==!(!x||!y) ? a)0 b)1 c)-1 d)2

73) Fie declaratiile: int x=-1, y=1. Care este valoarea expresiei ~x+y ? a)0 b)1 c)-1 d)expresia este gresita

74. Fie declaratiile : int x=2, y=3. Care este valoarea expresiei x&y-x|y+x^y stiind ca ordinea (descrescatoare) de precedent a operatorilor implicate este ( +,-),&,^,| ? a) 8 b)6 c)9 d)7

75. Fie declaratiile: int x=2, y=3; Care este valoarea expresiei x=y==5 ? a)3 b)2 c)5 d)0 e)1

76. Fie declaratiile : int x=2, y=3; Care este valoarea expresiei x- =y+1 ? a)4 b)-2 c)3 d)1 e)0

77. Fie declaratiile: int x=2,y=3; Care este valoarea expresiei x=2=y stiind ca operanzii se asociaza de la dreapta la stanga cu operatorul de atribuire ? a)3 b)expresia este eronata c)2 d)0 e)1

78. Care dintre variabilele din secventa urmatoare are valoarea finala -1 ? Int x=-2,y=0 z=1,v=-1; x++; y-=2; z-=y+++2; v=a-b ; a)toate b)x c)y d)x,v e)x,y,v f)y,v

79. Fie x=2 si y=3. Stiind ca ordinea (descrescatoare) a precedentei operatorilor este !,(*,%), (+,-),>,(==,!=),&&, care din expresiile de mai jos are valoarea 1 ? a)x+y>x%y+1 b)x&& c)!(x!=y) d)2*x-y==1 e)!(x-y!=0) 80. Care dintre urmatoarele expresii conditionale este o transcriere corecta a textului : daca x este pozitiv, atunci y ia valoarea a, altfel y ia valoarea lui b ? a) y=(x>0) ?a:b b) y=!x>0?b:a c) !(x>0) ?y=a:y=b; d) x>0?y=a:y=b 81. Daca a este o variabila de tip int si a=-1, valoarea expresiei ~++a este : a)-1 b)0 c)1 d)expresia este gresita syntactic 82. Daca tipul int se reprezinta pe 4 octeti ce afiseaza programul de mai jos ? # include <stdio.h> Void main () { Int x=5; Printf (%d, (sizeof(x-1)==sizeof(int))?sizeof(x):sizeof(2));} a)5 b)4 c)2 d)1

83. Ce afiseaza programul ? #include <stdio.h> Void main() { Int x=5, y=2, z=3; Printf(%d,(z=x-2,x=y/z,y-=x,x/2)) ;} a)3020 b)1002 c)0 d)-32,5 0,5 1,75 e) programul este eronat

84.Ce valoare afiseaza programul ? #include <stdio.h> Void main() { Int x,y,z; X=y=z=4; Printf(%d,(x<<z)-(x|y)+(z&y));} a)64 b)4 c)0 d)5 e)33 f)32

85. Care din urmatoarele variante reprezinta modalitati de comunicare intre functii? a) apel b) prin variabile locale c) prin argumentele actuale d) prin valoarea returnata e) prin variabile globale f) prin includere

86. Ce este contextul de apel al unei functii? a) lista argumentelor formale b) o zona de memorie (de pe stiva) c) locul din textul sursa in care se apeleaza d) instructiunile (definitia functiei)

87. Ce se regaseste in contextul de apel al unei functii? a) definitii de constante simbolice b) valoarea returnata c) adresa de revenire d) valoarea argumentelor actuale e) variabilele locale f) variabilele globale

88. Transmiterea argumentelor catre functia apelata (conventia de apel C) se face: a) prin variabile globale b) prin valoare c) in ordine inversa celei din lista de argumente d) prin referinta

89. Ce este o functie recursiva? a) o functie nu poate fi recursiva b) o functie care recurge la context c) o functie cu lista variabila de argumente d) o functie care se autoapeleaza

90. Comparata cu varianta sa iterativa, din punct de vedere al spatiului de memorie necesar apelului, o functie recursiva este, in principiu: a) la fel de eficienta b) mai putin eficienta c) mai eficienta

91. Comparata cu varianta sa iterativa, din punct de vedere al timpului de executie, o functie recursiva este, in principiu: a) la fel de eficienta b) mai eficienta c) mai putin eficienta

92. Efectul executiei urmatoarelor secvente: for(exp_1; exp_2 ; exp_3) instructiune; | | este a) identic b) diferit | | exp_1;

while( exp_2) {instructiune; exp_3;}

c) dependent de context

93. In absenta prototipului functiei, contextul urmatorului apel f('2', -1.5F, 2L); va contine argumente de tip: a) char, float, long b) int, double, long c) char, double, long d) int, float, long

94. Doua functii pot comunica in conditiile in care nici una nu o apeleaza pe cealalta? a) nu b) da, prin mesaje c) eventual, prin variabile globale 95. O functie cu lista de argumente de lungime variabila a) poate fi apelata fara nici un argument b) poate avea, la apeluri diferite, un numar diferit de argumente c) nu poate fi definita intr-un program C d) trebuie sa aiba cel putin un argument cu nume

96. Rezultatul apelului f(2, 1.5, 0.25) al unei functiei declarate ca void f(int , ...); si care asteapta argumente de tip float in lista variabila a) este corect b) nu este corect c) depinde de implementarea limbajului

97. Rezultatul apelului f(2, 1, 25) al unei functiei declarate ca void f(int , ...); si care asteapta argumente de tip long in lista variabila a) este corect b) nu este corect c) depinde de implementarea limbajului

98. Efectul executiei urmatoarelor secvente: for(exp_1; exp_2 ; exp_3) instructiune; | | este a) identic b) diferit c) dependent de context | | exp_1;

while( exp_2) instructiune; exp_3;

99. Care este efectul secventei: for(i=0; i<N; i++); printf("\n %d",i); a) se afiseaza, pe linii separate, valorile de la 1 la N b) se afiseaza pe linie noua valoarea N-1 c) se afiseaza, pe linii separate, valorile de la 0 la N-1 d) se afiseaza pe linie noua valoarea N

100. Definitia: void init(int tablou[ ]) { int n, i; n=sizeof tablou / sizeof(tablou[0]; for(i=0; i<n; i++) tablou[i]=0; } a) este, formal, corecta b) este, principial, gresita c) isi atinge scopul (initializarea cu 0 a elementelor tabloului) 101. Data functia float aria(float raza, float pi) {return pi*raza*raza;} precizati contextul de apel (configuratia stivei) la apelul a=aria(10,3. 14) stiind ca nu s-a furnizat prototipul (declaratia) functiei: a) (float)10, (float)3.14, adresa de revenire b) adresa de revenire, (float)10, (float)3.14 c) adresa de revenire, (int)10, (double)3.14 d) (int)10, (double)3.14, adresa de revenire 102. Secventa urmatoare void f(int n) { int t[n], i; for(i=0; i<n; i++) t[i]=0; } a) este gresita b) este corecta /*alte instructiuni */

c) este corecta daca n este diferit de 0

103. Daca n este o variabila de tip integral (char, short, int, long) care este efectul secventei: n=n%2; if(n=0) printf("n - par"); else printf("n - impar"); a) se afiseaza intotdeauna: n - impar b) se afiseaza intotdeauna: n - par c) depinde de valoarea initiala a lui n

104. Ce este gresit in urmatoarea definitie a functiei itoa: char *itoa(int n) /*converteste intregul n in sir de caractere */ { char buf[11]; sprintf(buf, "%d", n); return buf; } a) dimensiunea tabloului buf este prea mica b) nu e nimic gresit! c) integritatea rezultatului din buf nu este garantata in functia apelanta

105. Daca x este int, care din secventele de mai jos nu este echivalenta cu celalalte ? (i) (ii) if (x>>1<<1==x) printf (%d,x); if (x<<1>>1==x) printf (%d,x);

(iii) if (x%2==0) printf (%d,x); (iv) if (x/2.==x/2) printf (%d,x);

a)i b)ii c)iii d)iv e)toate sunt echivalente 106. Daca x este sirul de caractere Examen, care din secventele de mai jos nu afiseaza aceleasi rezultate ca celelalte ?

(i)

Int i=0 ; while (x[++i]!=0); if(i==strlen(x))printf(%s,x);

(ii)

Int i=0; while (x[i++]!=0); if(i==strlen(x))printf(%s,x);

(iii) (iv)

if(x[0]==E) printf (%s,x); if(x[4]==x[0]+a-A) printf (%s,x);

a)iv b)iii c)ii d)i e)i si ii f)i si iii

g) toate sunt echivalente

107. Daca x este sirul de caractere "Examen", care din secventele de mai jos l afiseaz pe x? (i) (ii) (iii) (iv) (v) if (strcmp(x,x+l) <0) printf ("%s, x) ; if(!strcmp(x,"Examen")) printf(%s",x); if(strncmp(x,"Examen",3)) printf("%s",x) if{strcmp("Examen", x)) printf("%s',x); if (strcmp("Examen",x)>0) printf (%s",x) ;

a) i b)ii c) i i i d) iv e)v f)i si ii g) iv si v h) toate sunt echivalente 108. Ce realizeaz secventa urmtoare asupra lui n: int n,k=0; while(n) { k+=(n%10==0) + (n%10==2) + (n%10==4) + (n%10==6) + (n%10==8);

n/=10;}

a) numr cifrele lui n b) numara cte cifre pare arc n c) test de paritate d) numr cate cifre pare (mai putin zerourile!) are n 109. Ce afiseaz urmtorul program? # include <stdio. h> int x; void y(int z) {printf("%d",++z;} void main () {x=1; y(x); printf ("%d", x);} a) 2 1 b) 1 1 c)21 d) 11 e)22 f)2 2

110. Ce afiseaza programul urmator ? # include <stdio.h>

Int f(int x) {return x+1;} Void p(int x) { printf (%d,x++);} Void main () {p(f(f(0))); }

a) 1 b) 2 c) 3 d) 0 111. Ce afiseaza programul urmator: # include <stdio.h> Int a; int u() { int a=2; return a;} Void w(int a) {printf(%d,++a);} Void v() { int a=4; printf (%d,a);} Void main () { a=1; Printf (%d,a); v(); w(a); Printf (%d%d, u(), a);} a) 14221 b) 11111 c) 14121 d) 14212 112. Care antet de functie este correct ? (i) int u (int x; int y); (ii) int u (int x,y,z[20]); (iii) int u (int x,y,*z); (iv)int u (int x; int y, int z[]);

a)i

b)ii

c) iii

d) iv

e)toate

f)niciunul

g)ii si iii

113. Ce afiseaza la printf(%d %d,f(100), f(-100)) daca f este int f(int k) { if (k) Return 10 *f(k/10) + k%10; Else Return 0; }

a)100-100 b)0 c)10-10 d) 1-1 e) 1 f)10010

114. Ce calculeaza functia Int f(int k) {if (k) Return (k%2==0) *k + f(k-1); Else Return 0; } a) suma numerelor <= k b) suma primelor k numere pare c) numara numerele impare

115.Ce se va afisa ?

#include <stdio.h> Void f(char c) { printf(%c, c++); If (c<d) f(c+2); printf(%c, --c); }

a) abccba b) ada c) abcd d) aca e) acca f) adda

116. Ce valoare se returneaza la apelul f (3) ? Int f(int k) { if (k<0) return 2; Else Return f(k-1) * 2;)

a)1 b)3 c)8 d)16 e)32 f)64 g) alta valoare

117.Ce determina secventa : K=0; While (a[k] [k]) K++; a)indicele primei valori nenule de pe diagonal b)indicele primei valori nule; c)indicele primei valori nule de pe diagonal; d)altceva

118.Ce valoare se afiseaza ? Int n =16; While (n) Do { n--; } while (n! = -1); Printf(%d,n);

a)0 b)-1 c)1 d)-2 e)ciclu infinit

119. Ce este un pointer? a) un indicator; b) o adresa de memorie c) o variabila a carei valoare se interpreteaza ca adresa

120. Care dintre urmatoarele operatii sunt ilegale: a) inmultirea unui pointer cu un intreg b) impartirea a doi pointeri c) compararea a doi pointeri d) scaderea unui pointer din alt pointer e) adunarea unui intreg la un pointer f) dereferentierea unui pointer

121. Ce operator se utilizeaza pentru dereferentierea unui pointer (adica pt.accesul la valoarea stocata la adresa care este pastrata in variabila pointer)? a) & b) . c) *

122. Care este tipul expresiei n**pi, in conditiile de mai jos long n=10, *pi=&n; a) long b) int c) long *

123. Care este valoare expresiei q-p, in conditiile de mai jos: int t[10], *p=t,*q=&t[9]; a) 9 b) 10 c) t[9]-t[0] d) 20

124. Pe cati octeti se reprezinta variabila p, declarata ca void *p ?

a) 0 b) 1 c) atatia cati sunt necesari pentru stocarea unei adrese

125. Daca pointerul p indica spre un element al unui tablou, in urma evaluarii expresiei p+5 a) p nu se modifica b) p indica 5 elemente dincolo de elementul spre care indica initial c) se obtine ca rezultat adresa celui de-al 5-lea element dincolo de elementul spre care indica p

126. Presupunand ca octetii unei variabile sunt memorati incepand cu octetul mai putin semnificativ, in conditiile int t[ ] = { 0x0203, 0x1} *p=t; valoarea expresiei *p * *(p+1)

a) este 0x203 b) este 0x6 c) este 0 d) depinde de valoarea lui p

127. In conditiile int t[ ] = { 0x0203, 0x4}; char *p = t; valoarea expresiei *p * *(p+1) a) este 0x203 b) este 0x6 c) este 0x8

d) 0xC

128. In conditiile int t[ ] = { 0x0203, 0x4}; char *p = t; valoarea expresiei *p * *(p+2) + 1 a) este 0x204 b) este 0x7 c) este 0xD d) 0x9

129. Care dintre urmatoarele operatii sunt legale: a) inmultirea unui pointer cu un intreg b) impartirea a doi pointeri c) compararea a doi pointeri d) scaderea unui pointer din alt pointer e) decrementarea unui pointer f) dereferentierea unui pointer

130. Care este tipul expresiei n**pi, in conditiile de mai jos int n=10, *pi=&n; a) long b) int c) int *

131. Stiind ca numele unui tablou este sinonim cu adresa primului element al tabloului, ce diferenta exista intre urmatoarele declaratii: char char s[ ] = "Timisoara"; *p = "Timisoara";

a) nici una b) prima declara un tablou, a doua un pointer c) expresia s==p este falsa d) expresia s==p este adevarata

132. Presupunand ca adresele se reprezinta pe 4 octeti, cat spatiu de memorie se rezerva prin declaratiile urmatoare: char *name, buffer[20]; short *pshort, t[20]; double *pdouble, PI; In ordine, pt name, buffer, pshort, t, pdouble si PI: a) 1, 20, 2, 40, 8, 8 octeti b) 4, 20, 4, 40, 4, 8 octeti c) nici un octet

133. Secventa urmatoare char *p; strcpy(p, "Timisoara"); a) este corecta b) este, principial, gresita c) va avea un rezultat imprevizibil

134. Secventa urmatoare char *p=c:\\temp\\; strcat(p, lista.txt); a) este, principial, gresita b) este corecta c) va avea un rezultat imprevizibil

135. Presupunand ca se furnizeaza prototipurile functiilor apelate, ce este gresit in secventa int *pi; char *pc; scanf("%d",pi); strcpy(pc,"timisoara"); a) argumentul pi din apelul lui scanf trebuie precedat de operatorul adresa (&) b) pi trebuie initializat inainte de scanf c) pc trebuie initializat inainte de strcpy

136. Care este valoarea variabilei r dupa executia secventei urmatoare, parte a definitiei unei functii: { char *string, r; r = (string == "Timisoara"); } a) 0 b) 1 c) 0 sau 1, dependent de context

137. Care este valoarea variabilei r dupa executia secventei urmatoare daca, la compilare, constantele sir de caracter se genereaza indiferent daca mai exista o alta identica: char *nume=Timisoara, r; main() { r = (nume == Timisoara); } a) 0 sau 1, dependent de context b) 0 c) 1

138. Care este valoarea variabilei r dupa executia secventei urmatoare daca, la compilare, constantele sir de caracter nu se duplica (se genereaza o singura data, indiferent de cate ori a fost specificata in textul sursa): char *nume=Timisoara, r; main() { r = (nume == Timisoara); } a) 0 sau 1, dependent de context b) 0 c) 1

139. Ce este gresit in secventa urmatoare, care ar trebui sa rezerve saptiu pentru 10 date de tip int si sa le initializeze cu 0: void *malloc(int ); void *p; p=malloc(10*sizeof(int)); for(i=0;i<10;i++) *p=0; a) secventa e corecta! b) p ar trebui incrementat la fiecare iteratie c) nu se poate dereferentia un pointer void 140. Care este valoarea lui n dupa executia secventei: char t[ ]="timisoara", *p,*q,n; p=q=t; while(*q++); n=q-p; a) n=0 b) n=9 c) n=10 d) n=\0-t 141. Care este valoarea lui n dupa executia secventei: char t[ ]="timisoara", *p, *q, n; p=q=t; while(*q) q++; n=*q-*p; a) a t b) 10 c) t b) 9

142. Ce este gresit in secventa: int t[N], *low=t, *mid, *high=&t[N-1]; mid = ( low + high ) / 2; a) un pointer nu se poate initializa cu un tablou b) initializarea lui low, respectiv high e gresita c) adunarea a doi pointeri este ilegala d) mid nu poate fi initializat cu o valoare reala (daca low+high e impar!)

143. Ce este gresit in secventa: char *p; strcpy(p, "Timisoara"); a) nu se poate copia un sir de caractere intr-un pointer! b) secventa e corecta c) pointerul p este neinitializat

144. Date declaratiile: int t[10], *pi=t; char *pc=t; de ce tip sunt valorile expresiilor *pi respectiv *pc? a) int * respectiv char * b) int / int c) int / char d) pc nu poate fi initializat cu t!

145. Care va fi valoarea pointerului p dupa initializare, daca adresa de inceput a tabloului t este 0x1A2: long t[100],*p; p=&t[6]; a) 0x1A8 b) 0x1BA c) 0x1C6

146. Daca tab este numele unui tablou, despre expresia *(++tab) se poate afirma ca: a) un tablou nu poate fi dereferentiat b) expresia e corecta c) numele unui tablou este o constanta, deci nu poate fi incrementat

147. Daca tab este numele unui tablou, despre expresia ++(*tab) se poate afirma ca: a) un tablou nu poate fi dereferentiat b) expresia e corecta c) numele unui tablou este o constanta, deci nu poate fi incrementat

148. In conditiile de mai jos, cum se poate obtine in p adresa urmatorului element al tabloului: int t[N]; char *p=t; a) p++ b) un char * nu poate fi initializat cu adresa unui int ! c) p+sizeof(int) d) p=p+sizeof(int)

149. Care este valoarea lui n dupa executia secventei: char t[]="timisoara", *p,*q, n; p=&t[1]; q=&t[3]; n=*q-*p; a) 2 b) secventa este gresita sintactic c) 0 d) 0

150. Care este valoarea lui n dupa executia secventei: char t[]="timisoara", *p,*q, n; p=&t[1]; q=&t[3]; n=*q-*p; a) 2 b) secventa e gresita sintactic d) 0 d) \0

151. Fie declaratiile int x=7, *y=&x. Valoarea lui y este: a) adresa lui x; b) 7 c) *&x d) &x e) x

152 Ce se afiseaza dupa executia secventei : Int x=7; *&x=5; printf(%d,x); a) 7 b) 5 c) Adresa lui x d) 0 e) 35 f) Error

153. Ce reprezinta declaratia : int *(*() (int *) ? (i) functie ce primeste argument pointer la intreg si intoarce pointer la intreg (ii) o declaratie gresita (iii)pointer catre o functie care asteapta ca argument un pointer la int si intoarce un pointer la int; (iv) pointer catre o functie care intoarce un int

a)i b)ii c)iii d)iv e)niciuna f)toate g)i si iv

154. Fie declaratia de variabile : int *u[3], v[3]; Care dintre atribuiri sunt incorecte ? a) u[1] = &v[2] ; b) *u[2] = v[0] ; c) u[0] = v; d) u[1] = *v ; e) &u[1] = v[1] ;

155. Ce se afiseaza ? #include <stdio.h> Void main() { Char *u[2] = {abc, def}, **v; V=&u[0]; Printf(&c,(*v) [1]);}

a) a b) b c) c d) d e) e f) f g) abc

156. Cat spatiu de memorie ocupa o variabila structura a) cat spatiul ocupat de cel mai voluminos dintre membrii b) egal cu suma spatiilor necesare membrilor c) cel putin cat suma spatiilor necesare membrilor

157. Care din afirmatiile urmatoare, referitoare la structuri, sunt adevarate: a) sunt tipuri de date agregate b) sunt tipuri de date definite de programator c) sunt tipuri de date predefinite d) sunt tipuri de date scalare

158 Ce operator se utilizeaza pentru accesul la un membru al unei structuri? a) ^

b) * c) & d) .

159 Poate o structura sa contina ca membru o structura de acelasi tip? a) da b) nu c) depinde de context

160. Care din urmatoarele operatii sunt legale: a) compararea a doua structuri b) returnarea unei structuri ca valoare a unei functii c) adunarea a doua structuri d) copierea unei structuri

161. Data o variabila structura si o variabila uniune, ambele avand aceiasi membri, care dintre ele ocupa mai mult spatiu in memorie? a) variabila uniune b)variabila structura c) ambele ocupa acelasi spatiu

162. Declaratia int a:3; poate fi o declaratie de membru: a) al unei structuri b) al unei uniuni c) al unui bit-field d) al oricaruia din cele trei tipuri amintite

163. Expresia p->m este de acelasi tip cu: a) tipul lui p

b) tipul lui m c) tipul void *

164. Poate o structura sa contina ca membru un pointer spre o structura de acelasi tip? a) da b) nu c) numai daca este primul membru d) numai daca este ultimul membru

165. Care din urmatoarele operatii sunt ilegale: a) compararea a doua structuri b) returnarea unei structuri ca valoare a unei functii c) adunarea a doua structuri d) copierea unei structuri

166. Date declaratiile de mai jos, precizati care din expresiile care urmeaza sunt corecte struct point{ float x,y;}; struct circle { struct point center; int radius; } v, *p=&v; a) p->center.x b) p.center.x c) *p->center.x d) (*p).center.x e) v->center.x f) v.center.x

167. Date declaratiile de mai jos si stiind ca i este o variabila intreaga, precizati care din expresiile care urmeaza sunt corecte struct point {int x,y;}; struct rectangle {struct point p1.p2;} *r[N]; a) r[i].p1.x b) r[i]->p1.x c) *(r[i]).p1.x d) *r[i].p1.x

168. Date declaratiile de mai jos, precizati tipul expresiei *(r[i]).p1.x, i fiind o variabila intreaga. struct point {int x,y;}; struct rectangle {struct point p1.p2;} *r[N]; a) struct rectangle b) struct rectangle * c) struct point d) int

169. Care din urmatoarele valori ale argumentului mode, pasat functiei fopen, permite deschiderea unui fisier text pt actualizare: a) "at" b) "rwt" c) "r+" d) "wt+" e) "a+" f) "rwt+"

170. Functia de pozitionare fseek poate fi folosita in cazul stream-urilor deschise a) pentru citire b) pentru scriere c) numai daca stream-ul e deschis pentru actualizare

171. Un stream binar deschis pentru citire (modul "rb") poate fi citit corect cu: a) fscanf b) gets c) getchar d) fread 172. Functia fscanf poate fi folosita pentru citirea a) numai a fisierelor text b) numai a fisierelor binare d) oricarui tip de fisier 173. Functia fputs poate fi folosita pentru scriere a) numai in fisiere binare b) numai in fisiere text d) in orice tip de fisiere 174. Functia printf este: a) o functie standard de iesire b) o functie de tiparire la imprimanta c) o functie de afisare formatata d) o functie cu lista variabila de argumente 175. Functia fputc returneaza valoarea EOF: a) numai la sfarsit de fisier

b) numai in caz de eroare c) in ambele situatii

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