Limbajul C
2007
I. Generalități (6 întrebări)
Care este singura funcție pe care toate programele C trebuie să o conțină? A. start()
B. system() C. main()
D. program()
Care este operatorul corect care trebuie utilizat pentru a compara două variabile?
A. : =
B. =
C. equal
D. = =
Ce punctuaţie se utilizează pentru a încheia majoritatea liniilor de cod in C?
A. .
B. ;
C. :
D. '
Care este operatorul corect care trebuie utilizat pentru a asigna o variabila unei
expresii?
A. : =
B. =
C. equal
D. = =
Ce punctuaţie se utilizează pentru a semnala începutul si sfâr şitul unui bloc de cod
sursă in C?
A. ( )
B. -> si <-
C. BEGIN si END D. { }
Care din următoarele este un comentariu corect?
A. /* Bla..Bla */
B. */ Bla..Bla */
C. ** Bla..Bla **
D. { Bla..Bla }
1
II. Operatori, instrucțiuni IF si condiții (11 întrebări)
Care din următorii operatori este cel utilizat pentru a realiza un SI(AND) –logic?
A. &
B. && C. |
D. |&
Care din următorii operatori este cel utilizat pentru a realiza un SAU(OR) –la nivel de bit
(bitwise)?
A. | |
B. &|
C. | D. |&
Care din următorii operatori este cel utilizat pentru a realiza un SAU(OR) logic?
A. | |
B. &|
C. | D. |&
Care din următorii operatori este cel utilizat pentru a realiza un SI(AND) – la nivel de bit
(bitwise)?
A. &
B. && C. |
D. &|
Care din următorii operatori este cel utilizat pentru a realiza complementul fata de 1–la
nivel de bit (bitwise)?
A. !
B. ~
C. ^
D. !!
Care din următorii operatori este cel utilizat pentru a realiza o negare logica?
A. !!
B. ~
C. &
D. !
Evaluați expresia: (unsigned char) 0x02 << 2
A. 0x04
B. 0x06
C. 0x01
D. 0x08
2
Evaluați expresia: (unsigned char) 0x11 >> 2
A. 0x04
B. 0x07
C. 0x22
D. 0x08
Evaluați expresia: !( 0 && !( 0 || 1))
A. Adevărat (True)
B. Fals (False)
C. Expresia nu poate fi evaluată
Care este sintaxa corectă pentru o instrucţiune C de tip IF?
A. if expresie
B. if {expresie}
C. if(expresie)
D. expresie if
Care din următoarele se va evalua ca adevărat (true)?
A. 1
B. 66
C. 1
D. -1
E. Toate de mai sus
III. Bucle (Loops) (4 întrebări)
Care este valoarea finală a lui x după ce codul corespunzător for(int x=0; x<10;
x++) corespunzător unei bucle FOR, a fost executat?
A. 1
B. 0
C. 9
D. 10
Când se va executa blocul de cod care urmeaz ă după un while(x<100) ? A. Când x
este mai mic decât 100.
B. Când x este mai mare decât 100. C. Când x este egal cu 100 .
D. Depinde de prima instrucţiune din blocul care urmează.
Care din următoarele construcţii nu este o buclă in limbajul C?
A. Repeat Until
B. Do while
C. While
D. For
3
Care este numărul minim de cate ori se execută o buclă C de tip DO WHILE? A. 1
B. Infinit C. 0
D. Variabil
IV. Funcţii (4 întrebări)
Care din următoarele porțiuni de cod descrie o funcţie completă?
A. int funct();
B. int funct(int x) {return x=x+1;}
C. void funct(int) {cout<<"Hello"}
D. void funct(x) {cout<<"Hello"}
Care din următoarele este un apel valid de funcţie (presupunând c ă funcţia funct
există)?
A. funct();
B. funct x, y;
C. funct;
D. int funct();
Care din următoarele construcţii nu este un prototip corect pentru o funcţie?
A. int funct(char x, char y);
B. double funct(char x)
C. void funct();
D. char x();
Care este tipul returnat de funcţia având prototipul: int func(char x, float v,
double t);
A. int B. float C. char
D. double
V. Instrucțiuni Switch, Case (4 întrebări)
Ce urmează după o instrucţiune case?
A. ;
B. :
C. O linie nouă
D. -
Ce este necesar pentru a evita trecerea dintr-un caz case in următorul caz case al unui
switch?
A. end; B. break;
4
C. Stop;
D. ;
Ce cuvânt cheie acoper ă in C posibilităţile pentru care tratarea unui switch nu este
definită?
A. all
B. contingency
C. default
D. other
Care este rezultatul execuţiei următorului cod C? x=0;
switch(x)
case 1: cout<<"One"; case 0: cout<<"Zero";
case 2: cout<<"Hello World";
One
Zero
Hello World
ZeroHello World
VI. Pointeri (8 întrebări)
Care din următoarele returnează adresa de memorie a pointerului a ?
A. a; B. *a; C. &a;
D. address(a);
Care din următoarele expresii returnează valoarea memorată in pointerul a ?
A. a;
B. val(a); C. *a;
D. &a;
Care din următoarele construcţii este o declaraţie corectă de pointer?
A. int x;
B. int &x;
C. ptr x;
D. int *x;
Următoarea linie de cod C: int *func(int a, char b); declară : A. o funcţie
func care returnează un pointer la un întreg
B. un pointer la o funcţie func care returnează un întreg
5
struct {int a;}
struct a_struct (int a;) struct a_struct int a; struct a_struct {int
a;};
Care din următoarele expresii returnează adresa de memorie a variabilei int a; ?
A. *a; B. a; C. &a;
D. address(a);
Care din următoarele cuvinte cheie este folosit in C pentru alocarea de memorie?
A. new
B. malloc
C. create
D. value
Care din următoarele cuvinte cheie este folosit in C pentru dealocarea de memorie?
A. free
B. delete
C. clear
D. remove
Următoarea linie de cod C: int (*func)(int a, char b); declară : A. o funcţie
func care returnează un pointer la un întreg
B. un pointer la o funcţie func care returnează un întreg
VII. Structuri (4 întrebări)
Care din următoarele este o structură definită corect?
A.
B.
C.
D.
Care din următoarele construcții accesează variabila var din structura b ?
A. b->var;
B. [Link];
C. b-var;
D. b>var;
Care din următoarele accesează variabila var din structura *b ?
A. b->var;
B. [Link];
C. b-var;
D. b>var;
6
int toto;
toto;
toto var;
struct toto;
Care din următoarele declară corect o variabilă de tip structură numită toto?
A.
B.
C.
D.
VIII. Vectori/tablouri (arrays) (5 întrebări)
Care din următoarele declară corect un vector?
A. int anarray[10];
B. int anarray;
C. anarray{10};
D. array anarray[10];
Care este indexul ultimului element dintr-un vector cu 29 de elemente? A. 29
B. 28
C. 0
D. Este definit de programator
Care din următoarele este o declaraţie corectă pentru un vector bidimensional?
A. array anarray[20][20];
B. int anarray[20][20];
C. int array[20, 20];
D. char array[20];
Care din următoarele accesează corect al 7-lea element memorat in toto , un
vector/tablou presupus definit anterior, având 100 de elemente?
A. toto [6];
B. toto [7];
C. toto (7);
D. toto;
Care din următoarele ne returnează adresa de memorie a primului element din toto , un
vector presupus definit anterior, având 100 de elem ente?
A. toto [0];
B. toto;
C. &toto;
D. toto [1];
IX. Şiruri (5 întrebări)
Care din următoarele este un sir (numit String) definit ca fiind cu alocare statică?
A. Static String
B. "Static String"
C. 'Static String'
D. char string[100];
7
Cu ce caracter se termină toate şirurile?
A. '.'
B. ' '
C. '/0'
D. '/n'
Care va fi valoarea lui a după asignarea (unsigned char) a= '/r'?
A. 0x00
B. 0x0D
C. 0x13
D. 0x41
Care din următoarele funcţii compară două şiruri?
A. compare();
B. stringcompare();
C. cmp();
D. strcmp();
Care din următoarele funcţii adaugă un sir la sfâr şitul altuia?
A. append();
B. stringadd();
C. strcat();
D. stradd();
X. Conversii de tip (typecasting) (5 întrebări)
Ce fişier de tip header (*.h) trebuie inclus pentru a putea folosi conversia de tip? A.
iostream.h
B. ctype.h C. math.h D. Niciunul
Care din următoarele este o conversie de tip validă?
A. a(char);
B. char:a;
C. (char)a;
D. to(char, a);
De ce conversia de tip poate fi si periculoasă ?
A. Anumite conversii nu sunt definite, cum ar fi din char în int. B. Se poate modifica
permanent valoarea unei date.
C. Se poate pierde temporar o parte a datelor, cum ar fi trunchierea unei variabile float la
conversia de tip într-un int.
D. Nu există nici un pericol.
8
Care din următoarele ar fi o bună utilizare a conversiei de tip?
A. Pentru a permite ca împărţirea a doi întregi sa returneze o valoare zecimala. B. Pentru a
permite ca programul să folosească doar variabile de tip întreg.
C. Pentru a schimba tipul variabilei returnate de o funcţie. D. Pentru a permuta rapid
variabilele.
Care din următoarele conversii nu este posibilă?
A. int în float
B. float în int
C. char în float
D. Toate de mai sus sunt posibile
XI. Diverse (16 întrebări)
Când este apelat ă o funcţie in C si trebuie să-i pasăm (transmitem) parametrii, variabilele
respective sunt pasate ca valoare sau prin referire (ca referinţă) ?
referire(ca referinţă)
valoare
Pentru ce este folosită directiva #define ?
declararea unei variabile
declararea unui întreg
crearea unei pre-compilări
definirea unei constante
dimensiune a unui vector
crearea unei constante la rulare(execuţie)
Nu există nici o diferență intre operaţiile var++ si ++var realizate asupra variabilei var,
presupusă declarată anterior.
A. Adevărat B. Fals
Când este evaluat ă funcţia sizeof()?
la compilarea programului
la rularea(execuţia) programului
Intr-o implementare tipică a limbajului C, cum este reprezentat tipul "char"?
16 biţi
8 biţi
32 biţi
3 octeţi (bytes)
Ambele instrucţiuni, continue si break, provoacă ieşirea dintr-o buclă. A. Adevărat
B. Fals
9
Care va fi valoarea lui i si j după execuţia următoarei secvenţe de cod C ? j=4;
for (i=0; i < 5; i++) { j++;
++j;
i=4j=9
i=5j=4
i=5j=9
i=5j=10
i=5j=14
necunoscut
Pentru ce este utilizată o declaraţie de tip union?
definirea unei zone de memorare comună
declararea unei structuri
iniţializarea datelor
definirea unor date de tip bitfield
Cum este implementată in C o instrucţiune de tip case?
cu goto
cu if
nu poate fi implementata
cu switch
Dacă variabilele p si i sunt declarate astfel:
long i;
long *p;
p = &i;
Atunci linia de cod : *p += 1; are acelaşi efect ca linia: *p++; A. Adevărat
B. Fals
Dacă variabilele p si s sunt declarate astfel:
char s[ ];
char *p;
p = &s[1];
Atunci linia de cod : s[3] = 'A'; are acelaşi efect ca linia: *(p+2) = 'A'; A.
Adevărat
B. Fals
Orice funcţie returnează ceva.
Adevărat
Fals
Care este valoarea lui i după execuția secvenței de cod? int i;
i = sizeof("07\0");
10
1
Care este mesajul tipărit după execuţia următoarei secvenţe de cod C: int i,j;
char s1[20], s2[20]; strcpy(s1, "Hello World"); s1[5] = '\0';
sprintf(s1, "%%.%is\n", strlen(s1)); printf(s1, "Hello World");
Hello
Hell
Hello World
He
Necunoscut, deoarece foloseşte un format incorect
Operatorul „ <<” realizeaz ă o :
A. concatenare
B. însumare
C. deplasare
D. comparare
11