Sunteți pe pagina 1din 9

Nume:……………………………

Prenume:……………………….

Evaluare C

1. In conditiile de mai jos


#define PI 3.14
int r = 1;
valoarea expresiei 2 * PI * r este de tip
a) int
b) float
c) double
d) long

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

3 Ce operator se utilizeaza pentru accesul la un membru al unei structuri?


a) ^
b) *
c) &
d) .
4. Care din urmatoarele valori ale argumentului mode, pasat functiei fopen, permite
deschiderea unui fisier text pt actualizare:
a) "at"
b) "rwt"
c) "r+"
d) "w+"
e) "a+"
5. Un stream binar deschis pentru citire (modul "rb") poate fi citit corect cu:
a) fscanf
b) gets
c) getchar
d) fread

6. 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 premise

7. Domeniul identificatorilor de variabile globale tine din locul declaratiei pana la:
a) sfarsitul blocului
b) sfarsitul programului
c) sfarsitul textului sursa
d) sfarsitul functiei

8. Care este rezultatul evaluarii expresiei


char V[20] = "0123456789";
daca i=9?
a) expresia este gresita sintactic
b) ‘9’
c) 9
d) ‘8’
9. 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]

10. Care este valoarea expresiei ~0?


a) 1
b) -1
c) 0xF

11. Ce se va afisa în urma executiei secventei urmatoare:


#include <stdio.h>
void main() {
unsigned char x=10;
x=~x;
printf(“%d”,(int)x); }
a) 245
b) 0
c) 255
12. Care din urmatoarele variante reprezinta modalitati de comunicare intre functii?
a) prin variabile locale
b) prin argumentele actuale
c) prin valoarea returnata
d) prin variabile globale
e) prin includere
13. 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

14. 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

15. Ce este un pointer?


a) un indicator;
b) o adresa de memorie
c) o variabila a carei valoare se interpreteaza ca adresa

16. 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) *

17. 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
18. 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

19. Presupunand ca adresele se reprezinta pe 4 octeti, cat spatiu de memorie se rezerva


prin ratiile 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

20. Transformarea din baza 16 in baza 10 a numarului 0x34 este:


a) 34
b) 52
c) 64
d) 86

21. Care este diferența dintre ++ a și a ++?

++x crește valoarea, apoi o evaluează și o stochează.

x++ evaluează valoarea, apoi o incrementează și o stochează.


22. Care este codul corect pentru a avea următoarea ieșire în C folosind o buclă?

for(int i = 1; i <= 5; i++){

for(int j = 1; j <= i; j++){

printf("%d ", j);

printf("\n");

}
23. Explicati in cateva cuvinte ce rol au in C urmatoarele cuvinte cheie: volatile, const,
static, break, unsigned.

Volatile - Îi spune compilatorului că valoarea variabilei se poate schimba oricând.


Const - Specifica faptul că valoarea acesteia nu va fi modificată
Static - Variabilele statice au proprietatea de a-și păstra valoarea chiar și după ce sunt în
afara domeniului lor de aplicare
Break - Instrucțiunea break încheie bucla imediat când este întâlnită.
Unsigned – Specifica faptul ca tipul variabila nu poate lua semn.

24. Scrieti un algoritm care sa calculeze si sa printeze in consola 12 valori din sirul lui
Fibonacci.
Exemplu 1,1,2,3,5,8……..,144

int n1=1,n2=1,n3,i;
printf("\n%d %d",n1,n2);
for(i=2;i<12;++i)
{
n3=n1+n2;
printf(" %d",n3);
n1=n2;
n2=n3;
}
25. Sa se resolve operatile de mai jos cu uramtoarele variabile:
A = 0xA3FD, B = 0xB2D9, C=9E8C
- A&B; A&C; B&C;
- A|B; A|C; B|C;
- A^B; A^C; B^C;
- A << 4; B>>4; C>>8;
- ~A; ~B; ~C;

A&B = A2D9; A&C= 828C; B&C=9288;


A|B = B3FD; A|C = BFFD; B|C = BEDD;
A^B = 1124; A^C = 3D71; B^C = 2C55;
A << 4 = A3FD0; B>>4 = B2D; C>>8 = 9E;
~A = C502; ~B = 4D26; ~C = 6173;

26. Sa se transfome urmatoarele valori din baza de numeratie 10 in bazele de numeratie


16 si 2 : 255, 19, 45, 300.
255 = FF = 11111111
19 = 13 = 00010011
45 = 2D = 00101101
300 = 12C = 0001 0010 1100

27. Se presupune ca avem un registru denumit UART0 pe 16 biti. Din registrul UART0
vrem sa setam bitul 0, bitul 8, bitul 13 cu valoarea 1. Apoi vrem sa resetam biti
mentionati anterior. Sa se scrie masca si operatia aferenta pentru setare si pentru resetare.
void SetareRegistruUart(){

// Scrie valoarea masti de setare


MascaSetare = 0x2101 ;
// Scrie operatia de setare
UART0 = UART0 | MascaSetare ;
}

void ResetareRegistruUart(){

// Scrie valoarea masti de resetare


MascaRestare = 0xDEFE ;
// Scrie operatia de resetare
UART0 = UART0 & DEFE ;
}

28. Scrieti o functie care primeste ca pametri un vector si numarul de elemente din vector.
Aceasta nu va returna nimic dar la apelul acesteia se vor afisa numerele impare din
vector.

void Func(int V[], int n){


for(int i = 0; i<= n-1; i++){
if(V[i] % 2 == 1){
printf(“%d “, V[i]);
}
}
}

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