ÎNTREBĂRI - Examen de Programarea Calculatoarelor
Document Details
Uploaded by Deleted User
Tags
Summary
Acest document conține întrebări despre diverse aspecte ale programării, inclusiv limbaje de programare, algoritmi și structuri de date. Întrebările vizează concepte fundamentale de programare.
Full Transcript
ÎNTREBĂRI CURS 1: Limbaje de programare. Algoritmi 1. Limbajul de programare este riguros definit? a. nu b. da c. doar limbajele de programare de nivel înalt d. doar limbajele de programare cod-maşină 2. Ce este vocabularul? a. totalitatea regulilor de scr...
ÎNTREBĂRI CURS 1: Limbaje de programare. Algoritmi 1. Limbajul de programare este riguros definit? a. nu b. da c. doar limbajele de programare de nivel înalt d. doar limbajele de programare cod-maşină 2. Ce este vocabularul? a. totalitatea regulilor de scriere corectă a programelor b. semnificaţia construcţiilor corecte din punct de vedere sintactic c. codul programului d. totalitatea cuvintelor care pot fi folosite într-un limbaj de programare 3. Ce este sintaxa? a. codul programului b. totalitatea construcţiilor corecte c. totalitatea regulilor de scriere corectă a programelor d. notația sistematică pentru descrierea unui proces 4. Ce este semantica? a. notația sistematică pentru descrierea unui proces b. semnificaţia construcţiilor corecte din punct de vedere sintactic c. totalitatea regulilor de scriere corectă a programelor d. codul unui program 5. Cum se numeşte notația sistematică pentru descrierea unui proces de calcul într-un computer? a. limbaj de programare b. vocabular c. sintaxă d. semantică 6. Scrierea programului presupune specificarea exactă și detaliată a paşilor şi a ….. acestora pentru prelucrarea datelor a. semanticii b. ordinii c. sintaxei d. codului 7. Scrierea programului presupune specificarea exactă și detaliată a ….. şi a ordinii acestora pentru prelucrarea datelor a. paşilor b. cuvintelor c. octeţilor d. proceselor 8. Scrierea programului presupune specificarea exactă și detaliată a paşilor şi a ordinii acestora pentru …. a. citirea datelor b. scrierea datelor c. prelucrarea datelor d. citirea şi scrierea datelor 9. Data structures + …… = Programs (Niklaus Wirth) a. Computer b. Input data c. Output data d. Algorithms 10. Data structures + Algorithms = …... (Niklaus Wirth) a. Computer b. Programs c. Input data d. Output data 11. Programarea calculatoarelor este acţiunea de scriere a ….. într-un limbaj de programare. a. datelor de intrare b. datelor de ieşire c. codului programului d. structurilor de date 12. Programarea calculatoarelor este acţiunea de scriere a codului programului într-un ……. a. limbaj de programare b. circuit electronic c. procesor d. sistem de numeraţie binar 13. Limbajele de programare care sunt înţelese direct de către calculatoare se numesc ……. a. limbaje pseudocod b. limbaje cod-maşină c. limbaje de nivel mediu d. limbaje de asamblare 14. Limbajele de programare care sunt apropiate de limbajul uman se numesc ……. a. limbaje de asamblare b. limbaje evoluate c. limbaje de nivel înalt d. limbaje cod-maşină 15. Limbajele de programare de pe un nivel intermediar se numesc ……. a. limbaje de nivel înalt b. limbaje cod-maşină c. limbaje de asamblare d. interfeţe 16. Calculator = ….. + ….. 1 a. hard + soft b. fişiere + programe c. internet + programe d. fişiere + internet 17. Soft = Sistem de Operare + ….. + Fișiere de date a. Fişiere executabile b. Programe c. Limbaje de programare d. Aplicaţii utilizator 18. Fişierele sunt de două tipuri mari: …. şi fişiere de date. a. fişiere text b. fişiere multimedia c. sistem de operare d. fişiere program 19. Fişierele sunt de două tipuri mari: fişiere program şi ….. a. fişiere de date b. fişiere de intrare c. fişiere de intrare/ieşire d. fişiere de ieşire 20. Fişierul reprezintă modalitatea de … … … în calculator. a. scriere a programelor b. de stocare a informaţiilor c. afişare a datelor d. structurare a octeţilor 21. Un algoritm este un set finit de ….. care transformă un set de date de intrare într-un set de date de ieşire. a. componente soft b. operaţii de memorie c. informaţii d. operaţii de prelucrare 22. Stabilirea valorii cu care o variabilă intră în calcule se numeşte ……….. a. iniţializare b. atribuire c. citire d. adresare 23. Instrucţiunea ciclică cu număr cunoscut de paşi are sintaxa: pentru …………… execută sfârşit pentru a. de la la b. de la la cu pas c. d. 24. Care sunt caracteristicile unei variabile sau a unei constante? a. nume, tip de dată, locaţie de memorie b. nume, valoare, locaţie de memorie c. nume, iniţializare, tip de dată, locaţie de memorie d. nume, valoare, tip de dată, locaţie de memorie 25. Ce înţelegem prin tip de date? a. nume, valoare, tip de dată, locaţie de memorie b. dacă data e de intrare sau de ieşire c. o mulţime de valori + o mulţime de operaţii pe acea mulţime de valori d. tipul simplu sau structurat al datei 26. O modalitate pentru comunicarea om-calculator este ………….. a. limbajul de programare b. vocabularul, sintaxa şi semantica c. limbajul pseudocod d. schema logică 27. ….. + Algorithms = Programs (Niklaus Wirth) a. Input data b. Data structures c. Memory d. Output data 28. Soft = ….. + Aplicaţii utilizator a. Programe b. Sistem de Operare c. Sistem de calcul d. Fişiere 29. Ce înțelegem prin interfață? a. o componentă software b. o componentă hardware c. transferul de date între om și calculator d. o parte a unui sistem care servește comunicării, asigurând un schimb corect de date între emițător și receptor. 30. Ce aduce nou programarea structurată în programarea imperativă? a. modularizarea, eliminarea instrucțiunii goto, structurarea datelor și a prelucrărilor b. folosirea obiectelor de tip structură care încapsulează date și metode c. utilizarea funcțiilor structurate pentru controlul fluxului prelucrărilor d. utilizarea declarațiilor și a funcțiilor structurate pentru a conduce prelucrarea pe bază de evenimente 2 31. Ce aduce nou programarea procedurală în programarea imperativă? a. nu este nicio legătură între cele două paradigme de programare b. eliminarea recursivității structurilor de control c. modularizează programul în una sau mai multe proceduri (funcții sau subrutine) d. înlocuirea stilului imperativ cu cel ne-imperativ 32. De ce este reprezentat pasul înainte pe care îl face programarea orientată obiect în programarea procedurală? a. elimină procedurile din interiorul claselor și al obiectelor b. orientează programarea spre obiectele supuse prelucrării: variabile și constante c. încapsulează datele în funcții pe care le numește obiecte d. încapsulează datele și funcțiile asociate acestora într-un concept unic: clasa. 33. Un bit.... a. este format din șiruri de 0 și 1 b. în limba engleză se scrie byte c. poate lua doar două valori 0 și 1 d. este un șir de 8 cifre binare 34. Care dintre algoritmii de mai jos interschimbă valorile a două variabile întregi a și b? a. b. c. d. întreg a, b, x întreg a, b întreg a, b, x întreg a, b citeşte a, b citeşte a, b citeşte a, b citeşte a, b x x) x = c; if (c < y) y = c; n = n /10; } t = x * 10 + y; printf("%d", t); } R. orice număr format doar din cifre 1 23 82. Ce afișează programul următor dacă se citește de la tastatura 5 2 3 1 7 9 ? #include main() { int t, n, x, i; x = 0; scanf("%d", &n); for ( i = 1; i 17 e prim; n = 77 => 77 nu e prim. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, i, prim = 0; printf("Dati numarul = "); scanf("%d",&n); for ( i = 2; i 1) și afișează dacă este prim sau nu. Exemple: n = 17 => 17 e prim; n = 77 => 77 nu e prim. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, i, prim = 1; printf("Dati numarul = "); scanf("%d",&n); for ( i = 2; i 0 nu e prim; n = 1 => 1 nu e prim. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, i, prim = 1; printf("n = "); scanf("%d",&n); if( n == 0 || n == 1 ) prim = 0; else for ( i = 2; i 17 e prim; n = 77 => 77 nu e prim; n = 0 => 0 nu e prim; n = 1 => 1 nu e prim. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, i, prim = 1; printf("n = "); scanf("%d",&n); if( n == 0 || n == 1 ) prim = 0; else for ( i = 1; i 0 nu e prim; n = 1 => 1 nu e prim. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, i, prim = 1; printf("n = "); scanf("%d",&n); if( n == 0 || n == 1 ) prim = 0; else for ( i = 2; i 0 nu e prim; n = 1 => 1 nu e prim. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, i, prim = 1; printf("Dati numarul = "); scanf("%d",&n); if(....... ) prim = 0; else for ( i = 2; i 77 nu e prim. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include #include main() { int n, i, prim = 1; 5 printf("Dati numarul = "); scanf("%d",&n); if( n%2 == 1) prim = 0; else for ( i = 3; i 1) și afișează dacă este prim sau nu evitând valorile pare din testul de divizibilitate. Exemple: n = 17 => 17 e prim; n = 77 => 77 nu e prim. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include #include main() { int n, i, prim = 1; printf("Dati numarul = "); scanf("%d",&n); if( n%2 == 0) prim = 0; else...................... if ( n%i == 0 ){ prim = 0; break; } if ( prim ) printf("%d e prim\n", n); else printf("%d nu e prim\n", n); } R. for ( i = 3; i 1 ){ if ( n%d == 0 ) { p = 0; while( n%d == 0 ){ ++p; n = n%d; } printf(p>1?"%d^%d":"%d", d, p); if ( n > 1 ) printf(" * "); } ++d; } } R. n = n%d; corect este n = n/d; 44. Programul următor afișează descompunerea în factori primi a unui număr natural n citit de la tastatură. Exemplu: n = 360 => 2^3 * 3^2 * 5. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, d, p; 11 printf("n = "); scanf("%d",&n); d = 2; while ( n > 1 ){ if ( n%d == 0 ) { p = 0; while( n%d ==0 ){ ++p;......... } printf(p>1?"%d^%d":"%d", d, p); if ( n > 1 ) printf(" * "); } ++d; } } R. n = n/d; 45. Programul următor afișează descompunerea în factori primi a unui număr natural n citit de la tastatură. Exemplu: n = 360 => 2^3 * 3^2 * 5. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, d, p; printf("n = "); scanf("%d",&n); d = 2; while ( n > 1 ){ if ( n%d == 0 ) { p = 0; while( n%d ==0 ){ ++p; n = n/d; } printf(p>1?"%d^%d":"%d", d, p); if ( n > 1 ) printf(" * "); }....... } } R. ++d; sau d++; sau d = d + 1; 46. Ce afișează programul următor dacă se citește de la tastatură 96 ? #include main() { int n, d, p; printf("n = "); scanf("%d",&n); d = 2; while ( n > 1 ){ if ( n%d == 0 ) { p = 0; while( n%d ==0 ){ ++p; n = n/d; } printf(p>1?"%d^%d":"%d", d, p); 12 if ( n > 1 ) printf(" * "); } ++d; } } R. 2^5 * 3 47. Ce afișează programul următor dacă se citește de la tastatură 96 ? #include main() { int n, d, p; printf("n = "); scanf("%d",&n); d = 2; while ( n > 1 ){ if ( n%d == 0 ) { p = 0; while( n%d ==0 ){ ++p; n = n/d; } printf(p>1?"%d^%d":"%d", d, p); if ( n > 1 ) printf(" * "); } ++d; } } R. 2^5 * 3 48. Ce afișează programul următor dacă se citește de la tastatură 1 ? #include main() { int n, d, p; printf("n = "); scanf("%d",&n); d = 2; while ( n > 1 ){ if ( n%d == 0 ) { p = 0; while( n%d ==0 ){ ++p; n = n/d; } printf(p>1?"%d^%d":"%d", d, p); if ( n > 1 ) printf(" * "); } ++d; } } R. nimic 49. Ce trebuie să citim pe intrare astfel încât programul următor să afișeze un singur număr prim ? #include main() { 13 int n, d, p; printf("n = "); scanf("%d",&n); d = 2; while ( n > 1 ){ if ( n%d == 0 ) { p = 0; while( n%d ==0 ){ ++p; n = n/d; } printf(p>1?"%d^%d":"%d", d, p); if ( n > 1 ) printf(" * "); } ++d; } } R. acel număr prim care se dorește afișat 50. Ce număr natural trebuie să citim pe intrare astfel încât programul următor să nu afișeze nimic ? #include main() { int n, d, p; printf("n = "); scanf("%d",&n); d = 2; while ( n > 1 ){ if ( n%d == 0 ) { p = 0; while( n%d ==0 ){ ++p; n = n/d; } printf(p>1?"%d^%d":"%d", d, p); if ( n > 1 ) printf(" * "); } ++d; } } R. 0 sau 1 51. Precizați scopul programului de mai jos? #include main() { int n, d, p; printf("n = "); scanf("%d",&n); d = 2; while ( n > 1 ){ if ( n%d == 0 ) { p = 0; while( n%d ==0 ){ ++p; n = n/d; } printf(p>1?"%d^%d":"%d", d, p); if ( n > 1 ) printf(" * "); 14 } ++d; } } R. afișează descompunerea în factori primi a unui număr natural n citit de la tastatură 52. Programul următor calculează cmmdc(n, m) pentru două numere naturale nenule n și m citite. Exemplu: n = 36, m = 30 => cmmdc(36, 30)= 6. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, m; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( n != m ) if ( n < m ) n = n - m; else m = m - n; printf("%d", n); } R. if ( n < m ) corect este if ( n > m ) 53. Programul următor calculează cmmdc(n, m) pentru două numere naturale nenule n și m citite. Exemplu: n = 36, m = 30 => cmmdc(36, 30)= 6. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, m; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); if ( n != m ) if ( n > m ) n = n - m; else m = m - n; printf("%d", n); } R. if(n!=m) corect este while(n!=m) 54. Programul următor calculează cmmdc(n, m) pentru două numere naturale nenule n și m citite. Exemplu: n = 36, m = 30 => cmmdc(36, 30)= 6. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, m; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( n != 0 ) if ( n > m ) n = n - m; else m = m - n; printf("%d", m); } 15 R. while(n!=0) corect este while(n!=m) 55. Programul următor calculează cmmdc(n, m) pentru două numere naturale nenule n și m citite. Exemplu: n = 36, m = 30 => cmmdc(36, 30)= 6. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, m; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m);......... if ( n > m ) n = n - m; else m = m - n; printf("%d", n); } R. while ( n != m ) 56. Programul următor calculează cmmdc(n, m) pentru două numere naturale nenule n și m citite. Exemplu: n = 36, m = 30 => cmmdc(36, 30)= 6. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, m; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( n != m ) if ( n > m )....... else m = m - n; printf("%d", n); } R. n = n - m; 57. Ce afișează programul următor dacă se citește de la tastatură 96 60 ? #include main() { int n, m; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( n != m ) if ( n > m ) n = n - m; else m = m - n; printf("%d", n); } R. 12 58. Ce trebuie să citim pe intrare astfel încât programul să afișeze 1 ? #include main() { int n, m; 16 printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( n != m ) if ( n > m ) n = n - m; else m = m - n; printf("%d", n); } R. 1 și orice altceva 59. Precizați scopul programului de mai jos? #include main() { int n, m; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( n != m ) if ( n > m ) n = n - m; else m = m - n; printf("%d", n); } R. calculează cmmdc(n, m) pentru două numere naturale nenule n și m 60. Programul următor calculează cmmdc(n, m) pentru două numere naturale nenule n și m citite. Exemplu: n = 36, m = 30 => 6. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, m, r; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( n != 0 ){ r = n%m; n = m; m = r; } printf("%d", n); } R. while ( n != 0 ) corect este while ( m != 0 ) 61. Programul următor calculează cmmdc(n, m) pentru două numere naturale nenule n și m citite. Exemplu: n = 36, m = 30 => 6. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int n, m, r; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( m != 0 ){ r = n%m; n = m; m = r; } printf("%d", m); 17 } R. printf("%d", m); corect este printf("%d", n); 62. Programul următor calculează cmmdc(n, m) pentru două numere naturale nenule n și m citite. Exemplu: n = 36, m = 30 => 6. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, m, r; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( m != 0 ){.............. n = m; m = r; } printf("%d", n); } R. r = n%m; 63. Ce afișează programul următor dacă se citește de la tastatură 96 36 ? #include main() { int n, m, r; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( m != 0 ) r = n%m, n = m, m = r; printf("%d", n); } R. 12 64. Dacă pentru n se citește valoarea 4 ce valoare trebuie să citim pentru m astfel încât programul următor să afișeze 1 ? #include main() { int n, m, r; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( m != 0 ) r = n%m, n = m, m = r; printf("%d", n); } R. 1 sau orice număr prim cu 4 65. Precizați scopul programului de mai jos? #include main() { int n, m, r; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); while ( m != 0 ) r = n%m, n = m, m = r; printf("%d", n); 18 } R. calculează cmmdc(n, m) pentru două numere naturale nenule n și m 66. Programul următor convertește numărul n dat, din baza 10 în baza b (2 721; n = 0x7F, b = 8 => 771; n = 0xB, b = 2 => 1101. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, b, c; printf("n = "); scanf("%....",&n); printf("b = "); scanf("%d",&b); while ( n ){ c = n % b; if ( c < 10 ) printf("%d", c); else printf("%c", c + 55); n /= b; } } R. x 110. Programul următor citește un număr n natural în baza 16 și afișează cifrele sale începând cu cifra cea mai puțin semnificativă ale reprezentării sale într-o bază oarecare b. b se citește pe intrare. Exemple: n = 0x7F, b = 10 => 721; n = 0x7F, b = 8 => 771; n = 0xB, b = 2 => 1101. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int n, b, c; printf("n = "); scanf("%x",&n); printf("b = "); scanf("%d",&b); while ( n ){ c = n % b; if ( c < 10 ) printf("%d", c); else printf("%c", c + 55); n /=....; } } R. b 111. Ce afișează programul următor dacă se citește de la tastatură 0x1A 10 (0x2B 10) (0x3A 8) (0x2C 8) (0x1C 2) (0x1D 2) ? #include main() { int n, b, c; 32 printf("n = "); scanf("%x",&n); printf("b = "); scanf("%d",&b); while ( n ){ c = n % b; if ( c < 10 ) printf("%d", c); else printf("%c", c + 55); n /= b; } } R. 62 (34) (27) (45) (00111) (10111) 112. Dacă pentru b se citește valoarea 2 ce valoare trebuie să citim pentru n astfel încât programul să afișeze 010111 (0101001)? #include main() { int n, b, c; printf("n = "); scanf("%x",&n); printf("b = "); scanf("%d",&b); while( n ){ c = n % b; if( c < 10 ) printf("%d", c); else printf("%c", c + 55); n /= b; } } R. 0x3A (0x4A) 113. Dacă pentru b se citește valoarea 8 ce valoare trebuie să citim pentru n astfel încât programul să afișeze 231 (63)? #include main() { int n, b, c; printf("n = "); scanf("%x",&n); printf("b = "); scanf("%d",&b); while( n ){ c = n % b; if( c < 10 ) printf("%d", c); else printf("%c", c + 55); n /= b; } } R. 0x5A (0x1E) 114. Dacă pentru b se citește valoarea 10 ce valoare trebuie să citim pentru n astfel încât programul să afișeze 221 (95)? #include main() { int n, b, c; printf("n = "); scanf("%x",&n); printf("b = "); scanf("%d",&b); while( n ){ 33 c = n % b; if( c < 10 ) printf("%d", c); else printf("%c", c + 55); n /= b; } } R. 0x7A (0x3B) 115. Program următor convertește un număr f fracționar din baza 10 într-o bază oarecare b (e.g. 2, 8, 16) cu precizia prec. Programul conține o instrucțiune scrisă greșit. Exemplu: f = 0,123(10), b = 16, prec = 5 => 0,1F7CE(16). Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int b, p, i = 0, prec; float f, s; printf("f = "); scanf("%d",&f); printf("b = "); scanf("%d",&b); printf("prec = "); scanf("%d",&prec); while (i < prec) { s = b * f; p = (int)s; f = s - p; ++i; if ( p < 10) printf("%d", p); else printf("%c", p + 55); } } R. scanf("%d",&f); corect este scanf("%f",&f); 116. Program următor convertește un număr f fracționar din baza 10 într-o bază oarecare b (e.g. 2, 8, 16) cu precizia prec. Programul conține o instrucțiune scrisă greșit. Exemplu: f = 0,123(10), b = 16, prec = 5 => 0,1F7CE(16). Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include main() { int b, p, i = 0, prec; float f, s; printf("f = "); scanf("%f",&f); printf("b = "); scanf("%d",&b); printf("prec = "); scanf("%d",&prec); while (i < prec) { s = b * f; p = (int)s; f = p - s; ++i; if ( p < 10) printf("%d", p); else printf("%c", p + 55); } } R. f = p - s; corect este f = s - p; 34 117. Program următor convertește un număr f fracționar din baza 10 într-o bază oarecare b (e.g. 2, 8, 16) cu precizia prec. Programul conține o instrucțiune scrisă greșit. Exemplu: f = 0,123(10), b = 16, prec = 5 => 0,1F7CE(16). Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int b, p, i = 0, prec; float f, s; printf("f = "); scanf("%f",&f); printf("b = "); scanf("%d",&b); printf("prec = "); scanf("%d",&prec); while (i < prec) { s = b * f; p = (int)s; f = s -.....; ++i; if ( p < 10) printf("%d", p); else printf("%c", p + 55); } } R. p 118. Program următor convertește un număr f fracționar din baza 10 într-o bază oarecare b (e.g. 2, 8, 16) cu precizia prec. Programul conține o instrucțiune scrisă greșit. Exemplu: f = 0,123(10), b = 16, prec = 5 => 0,1F7CE(16). Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include main() { int b, p, i = 0, prec; float f, s; printf("f = "); scanf("%f",&f); printf("b = "); scanf("%d",&b); printf("prec = "); scanf("%d",&prec); while (i < prec) { s = b * f; p = (int)s; f = s - p;...... if ( p < 10) printf("%d", p); else printf("%c", p + 55); } } R. ++i; 119. Ce afișează programul următor dacă se citește de la tastatură 0.1 16 2 (0.2 16 2) (0.3 8 2) (0.1 8 2) (0.2 2 3) (0.9 2 2) ? #include main() { int b, p, i = 0, prec; float f, s; printf("f = "); scanf("%f",&f); printf("b = "); scanf("%d",&b); printf("prec = "); scanf("%d",&prec); while (i < prec) { 35 s = b * f; p = (int)s; f = s - p; ++i; if ( p < 10) printf("%d", p); else printf("%c", p + 55); } } R. 19 (33) (23) (06) (001) (11) 120. Programul următor apelează o funcție care calculează diferența a două numere reale. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include float scad(a, b); main() { float x = 3.25, y = 4.05, dif; dif = scad(x, y); printf("%g - %g = %g\n", x, y, dif); } float scad(float a, float b) { float s; s = a - b; return s; } R. float scad(a, b); corect este float scad(float, float); 121. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include float scad(float, float); main() { float x = 3.25, y = 4.05, dif; dif = scad(x, y); printf("%g - %g = %g\n", x, y, dif); } float scad(float a, float b) { float s; s = a - b;............ } R. return s; 122. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include float scad(float, float); main() { float x = 3.25, y = 4.05, dif; dif =..... printf("%g - %g = %g\n", x, y, dif); } float scad(float a, float b) 36 { float s; s = a - b; return s; } R. scad(x, y); 123. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include float scad(............); main() { float x = 3.25, y = 4.05, dif; dif = scad(x, y); printf("%g - %g = %g\n", x, y, dif); } float scad(float a, float b) { float s; s = a - b; return s; } R. float, float sau float a, float b 124. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include float scad(float, float); main() { float x = 3.25, y = 4.05, dif; dif = scad(x, y); printf("%g - %g = %g\n", x, y, dif); } float scad(...........) { float s; s = a - b; return s; } R. float a, float b 125. Programul următor trebuie să producă o afișare ca cea din imagine. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include int main() { enum zile { LUN = 1, MAR = 1, MIE = 1, JOI, VIN, SAM, DUM, LUN }; printf("LUN=%d, MAR=%d, MIE=%d, JOI=%d \n", LUN, MAR, MIE, JOI); return 0; } R. enum zile { LUN = 1, MAR = 1, MIE = 1, JOI, VIN, SAM, DUM, LUN }; corect este enum zile { LUN = 1, MAR = 1, MIE = 1, JOI, VIN, SAM, DUM }; 126. Programul următor trebuie să producă o afișare ca cea din imagine. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect. #include 37 int main() { enum zile { LUN = 1, MAR = 1, MIE = 1, JOI, VIN, SAM, DUM }; printf("LUN=%d, MAR=%d, MIE=%d, JOI=%d \n",.......); return 0; } R. LUN, MAR, MIE, JOI 127. Ce afișează programul următor ? #include int main() { enum zile { LUN = 1, MAR = 1, MIE = 1, JOI, VIN, SAM, DUM }; printf("LUN=%d, MAR=%d, MIE=%d, JOI=%d \n", LUN, MAR, MIE, JOI); return 0; } R. LUN=1, MAR=1, MIE=1, JOI=2 128. Programul următor trebuie să producă o afișare ca cea din imagine. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include int main() { enum zile { DUM = 1, LUN, MAR, MIE, JOI, VIN, SAM } zi; enum zile ziua = DUM; for ( zi = DUM; zi 0) În secvența de cod alăturată compilatorul ….. for (i = 0; i < n; i++) if (s[i] > 0) { a. nu va ajunge niciodată să proceseze else printf("ok"); return i; b. va semnala eroare } c. va asocia else cu if (s[i] > 0) else d. va asocia else cu if (n > 0) printf("error\n"); 33. Pentru ieşirea din switch se folosesc ….. a. doar instrucţiuni break b. doar instrucţiuni return. c. ramurile case şi default d. instrucţiunile break sau return. 34. x = x & ~077 a. setează ultimii 7 biţi ai lui x la zero b. setează ultimii 7 biţi ai lui x la 1 c. setează ultimii 6 biţi ai lui x la zero d. setează ultimii 6 biţi ai lui x la 1 35. Variabila reprezintă un obiect de date cu 4 caracteristici: numele, valoarea, ….. şi adresa de memorie. a. clasa de memorare b. mulţimea de valori c. funcţia d. tipul de dată 36. Numărul 31 din baza 10 poate fi scris în hexazecimal ca ….. a. x1F b. 0x1f c. 0x31 d. x31 37. Operatorul unar de negaţie ! converteşte un operand nenul în 0 şi un operand 0 în….. a. 0 b. 1 c. într-o valoare nenulă d. într-o valoare diferită de 1 38. Programul următor afișează lungimea unui șir de caractere citit pe intrare. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include int strlen(char s[]); main() { char s1, c; int i = 0; printf("\n Sirul : "); while ( c = getchar() != '\n') s1[i++] = c; s1[i]='\0'; printf("\ns1 = \"%s\" are lungimea = %d\n", s1, strlen(s1)); return 0; 3 } int strlen(char s[]) { int i = 0; while (s[i] != '\0') ++i; return i; } R. while (c = getchar() != '\n') corect este while ((c = getchar()) != '\n') 39. Programul următor afișează lungimea unui șir de caractere citit pe intrare. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să producă afișarea din imagine. #include int strlen(char s[]); main() { char s1, c; int i = 0; printf("\n Sirul : "); while ((c = getchar()) != '\n') s1[i++] = c; s1[i]='\0'; printf("\ns1 = "%s" are lungimea = %d\n", s1, strlen(s1)); return 0; } int strlen(char s[]) { int i = 0; while (s[i] != '\0') ++i; return i; } R. printf("\ns1 = "%s" are lungimea = %d\n", s1, strlen(s1)); corect este printf("\ns1 = \"%s\" are lungimea = %d\n", s1, strlen(s1)); 40. Programul următor afișează lungimea unui șir de caractere citit pe intrare. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca programul să funcționeze corespunzător. #include int strlen(char s); main() { char s1, c; int i = 0; printf("\n Sirul : "); while ((c = getchar()) != '\n') s1[i++] = c; s1[i]='\0'; printf("\ns1 = \"%s\" are lungimea = %d\n", s1, strlen(s1)); return 0; } int strlen(char s) { int i = 0; while (s[i] != '\0') ++i; return i; } 4 R. int strlen(char s) corect este int strlen(char s[]) 41. Programul următor afișează lungimea unui șir de caractere citit pe intrare. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru ca programul să funcționeze corect. #include int strlen(char s[]); main() { char s1, c; int i = 0; printf("\n Sirul : "); while ((c = getchar()) != '\n') s1[i++] = c; s1[i]='\0'; printf("\ns1 = \"%s\" are lungimea = %d\n", s1, strlen(s1)); return 0; } int strlen(char s[]) { int i = 0; while (s[i] !=......) ++i; return i; } R. '\0' 42. Programul următor afișează lungimea unui șir de caractere citit pe intrare. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru ca programul să funcționeze corect. #include int strlen(char s[]); main() { char s1, c; int i = 0; printf("\n Sirul : "); while ((c = getchar()) != '\n') s1[i++] = c; s1[i]='\0'; printf("\ns1 = \"%s\" are lungimea = %d\n", s1, strlen(s1)); return 0; } int strlen(char s[]) { int i = 0; while (s[i] != '\0')..... return i; } R. ++i; 43. Programul următor afișează lungimea unui șir de caractere citit pe intrare. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru ca programul să funcționeze corect. #include int strlen(char s[]); main() 5 { char s1, c; int i = 0; printf("\n Sirul : "); while ((c = getchar()) != '\n') s1[i++] = c;.............. printf("\ns1 = \"%s\" are lungimea = %d\n", s1, strlen(s1)); return 0; } int strlen(char s[]) { int i = 0; while (s[i] != '\0') ++i; return i; } R. s1[i]='\0'; 44. Programul următor afișează lungimea unui șir de caractere citit pe intrare. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru ca programul să funcționeze corect. #include int strlen(char s[]); main() { char s1, c; int i = 0; printf("\n Sirul : "); while ((c =......) != '\n') s1[i++] = c; s1[i]='\0'; printf("\ns1 = \"%s\" are lungimea = %d\n", s1, strlen(s1)); return 0; } int strlen(char s[]) { int i = 0; while (s[i] != '\0') ++i; return i; } R. getchar() 45. Programul următor afișează lungimea unui șir de caractere citit pe intrare. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru ca programul să funcționeze corect. #include int strlen(char s[]); main() { char s1, c; int i = 0; printf("\n Sirul : "); while ((c = getchar()) != '\n') s1[.....] = c; s1[i]='\0'; printf("\ns1 = \"%s\" are lungimea = %d\n", s1, strlen(s1)); return 0; } 6 int strlen(char s[]) { int i = 0; while (s[i] != '\0') ++i; return i; } R. i++ 46. Ce afișează programul următor dacă se citește de la tastatură sir. #include int t(char s[]); main() { char s1, c; int i = 0; while ((c = getchar()) != '\n') s1[i++] = c; s1[i]='\0'; printf("%d", t(s1)); return 0; } int t(char s[]) { int i = 0; while (s[i] != '\0') ++i; return i; } R. 3 47. Ce trebuie să citim de la tastatură astfel încât programul să afișeze 3. #include int t(char s[]); main() { char s1, c; int i = 0; while ((c = getchar()) != '\n') s1[i++] = c; s1[i]='\0'; printf("%d", t(s1)); return 0; } int t(char s[]) { int i = 0; while (s[i] != '\0') ++i; return i; } R. orice șir de 3 caractere 48. Precizați scopul funcției t() de mai jos? int t(char s[]) { int i = 0; while (s[i] != '\0') ++i; 7 return i; } R. întoarce lungimea șirului s 49. Precizați scopul funcției r() de mai jos? int r(char s[]) { int i = -1; while (s[++i] != '\0'); return i; } R. întoarce lungimea șirului s 50. Funcția următoare întoarce lungimea șirului s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int strlen(char s[]) { int i; while (s[i] != '\0') ++i; return i; } R. int i; corect este int i = 0; 51. Funcția următoare întoarce lungimea șirului s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int strlen(char s[]) { int i = 0; while (s[i] != ”\0”) ++i; return i; } R. ”\0” corect este '\0' 52. Funcția următoare întoarce lungimea șirului s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int strlen(char s[]) { int i = 0; while (s[++i] != '\0'); return i; } R. int i = 0; corect este int i = -1; 53. Funcția următoare întoarce lungimea șirului s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int strlen(char s[]) { int i = 0; while (s[i] != '\0'); ++i; return i; } 8 R. while (s[i] != '\0'); corect este while (s[i] != '\0') 54. Funcția următoare întoarce lungimea șirului s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int strlen(char s[]) { int i = -1; while (s[++i] != '\0') return i; } R. while (s[i] != '\0') corect este while (s[i] != '\0'); 55. Funcția următoare întoarce lungimea șirului s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int strlen(char s[]) { int i = -1; while (s[i++] != '\0'); return i; } R. while (s[i++] != '\0'); corect este while (s[++i] != '\0'); 56. Funcția următoare întoarce lungimea șirului s. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă. int strlen(char s[]) { int i = 0; while (.......) ++i; return i; } R. s[i] != '\0' 57. Funcția următoare întoarce lungimea șirului s. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă. int strlen(char s[]) { int i = 0; while (s[i] != '\0')...... return i; } R. ++i; sau i++; 58. Funcția următoare întoarce lungimea șirului s. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă. int strlen(char s[]) { int i = 0; while (s[i] != '\0') ++i;.......... } 9 R. return i; 59. Funcția următoare atoi(s) convertește un șir de cifre primit prin intermediul parametrului s - reprezentând un număr natural - la echivalentul său numeric. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int atoi(char s[]) { int i, n = 0; for (i = 0; s[i] >= '0' && s[i] = '0' || s[i] = '0' || s[i] = '0' && s[i] = 0 && s[i] = 0 && s[i] = '0' && s[i] = '0' && s[i] = '0' && s[i] = '0' && s[i] = '0' && s[i] = '0' && s[i] = '0' && s[i] = '0' && c = 'a' && c = 'A' && c = '0' && c = 'a' && c = 'A' && c = '0' && c = 'a' && c = 'A' && c = '0' && c = 'a' && c = 'A' && c = 'a' && c = 'A' && c = '0' && c = 'a' && s[i] = 'A' && s[i] = 'a' && s[i] = 'A' && s[i] = 'a' && s[i] = 'A' && s[i] = 'a' && s[i] = 'A' && s[i] = 'a' && s[i] = 'A' && s[i] = 'A' && c = 'A' || c = 'A' || c = 'A' && c = 'a' && c = 'a' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' || c = 'A' || c = 'A' && c = 'a' && c = 'a' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c = 'A' && c > (p + 1 - n)) & ~(~0 > (p + 1 - n)) & ~(~0 > (p + 1 - n)) & ~(~0 0 && y[k] == '\0') return i; } return -1; } R. for (i = 0; x[i] == '\0'; i++) corect este for (i = 0; x[i] != '\0'; i++) 122. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j=i, k=0; y[k]!='\0' && x[j]==y[k]; j++); if (k > 0 && y[k] == '\0') 32 return i; } return -1; } R. for(j=i,k=0;y[k]!='\0'&&x[j]==y[k];j++) corect este for(j=i,k=0;y[k]!='\0'&&x[j]==y[k];j++,k++) 123. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j=i, k=0; y[k]!='\0' && x[j]==y[k]; j++, k++); if (k > 0 && y[k] != '\0') return i; } return -1; } R. if(k>0&&y[k]!='\0') corect este if(k>0&&y[k]=='\0') 124. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j=i, k=0; y[k]!='\0' && x[j]==y[k]; j++, k++); if (k > 0 && y[k] == '\0') return k; } return -1; } R. return k; corect este return i; 125. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j=i, k=0; y[k]!='\0' && x[j]==y[k]; j++, k++); if (k > 0 && y[k] == '\0') return i; } return k; } R. return k; corect este return -1; 126. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte..... f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 && y[k] == '\0') 33 return i; } return -1; } R. int 127. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) {... i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 && y[k] == '\0') return i; } return -1; } R. int 128. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] !=...; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 && y[k] == '\0') return i; } return -1; } R. '\0' 129. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k =...; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 && y[k] == '\0') return i; } return -1; } R. 0 130. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] ==...; j++, k++); if (k > 0 && y[k] == '\0') return i; 34 } return -1; } R. y[k] 131. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++,...); if (k > 0 && y[k] == '\0') return i; } return -1; } R. k++ 132. Funcția următoare returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 &&....== '\0') return i; } return -1; } R. y[k] 133. Ce returnează funcția următoare la apelul f("pascal", "sc")? int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 && y[k] == '\0') return i; } return -1; } R. 2 134. Ce returnează funcția următoare la apelul f("pascal", "pac")? int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 && y[k] == '\0') return i; } return -1; } 35 R. -1 135. Ce returnează funcția următoare la apelul f("knosos", "os")? int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 && y[k] == '\0') return i; } return -1; } R. 2 136. Dacă variabila x are valoarea ”atomic”, ce valoare trebuie să aibă variabila y, astfel încât la apelul f(x, y) să se returneze 3 ? int f(char x[], char y[]) { int i, j, k; for (i = 0; x[i] != '\0'; i++) { for (j = i, k = 0; y[k]! = '\0' && x[j] == y[k]; j++, k++); if (k > 0 && y[k] == '\0') return i; } return -1; } R. ”m”, ”mi” sau ”mic” 137. Precizați scopul funcției f() de mai jos? int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x 138. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { int i, j, n = strlen(x); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; 36 } R. n = strlen(x); corect este n = strlen(x) - strlen(y) 139. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { int i, j, n = strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. n = strlen(y); corect este n = strlen(x) - strlen(y); 140. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n > 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. while (n > 0) corect este while (n >= 0) 141. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = 0, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. for (i = 0, j = 0; corect este for (i = n, j = 0; 142. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. int f(char x[], char y[]) { 37 int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return j; n--; } return -1; } R. return j; corect este return n; 143. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; }.........; } R. return -1 144. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, n =.........- strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. strlen(x) 145. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (.........) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. n >= 0 38 146. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i =....., j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. n 147. Funcția următoare returnează poziția celei mai din dreapta apariții a șirului de caractere y în șirul de caractere x, sau -1 dacă șirul y nu apare deloc în șirul x. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i,.....); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. ++j 148. Ce returnează funcția următoare la apelul f(”knosos”, ”os”)? int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. 4 149. Ce returnează funcția următoare la apelul f(”knosos”, ”ns”)? int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } 39 R. -1 150. Ce returnează funcția următoare la apelul f(”on”, ”on”)? int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. 0 151. Ce returnează funcția următoare la apelul f(”aaaa”, ”a”)? int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. 3 152. Dacă variabila x are valoarea ”knosos”, ce valoare trebuie să aibă variabila y, astfel încât la apelul f(x, y) să se returneze 4? int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; } R. os 153. Dacă variabila x are valoarea ”knosos”, ce valoare trebuie să aibă variabila y, astfel încât la apelul f(x, y) să se returneze 2 ? int f(char x[], char y[]) { int i, j, n = strlen(x) - strlen(y); while (n >= 0) { for (i = n, j = 0; y[j] != '\0' && x[i] == y[j]; ++i, ++j); if (j > 0 && y[j] == '\0') return n; n--; } return -1; 40 } R. ”oso” sau ”osos” 154. Care este valoarea lui k la finalul secvenței de mai jos? float a = {3, -2.06, 4.25, -3.09, 9.01, 8.99, -0.56}; int i, k = 0, n = 7; for (i = 0; i < n; i++){ if (a[i] < 0) continue; else ++k; } R. 4 155. Care este valoarea lui i la finalul secvenței de mai jos? float a = {3, -2.06, 4.25, -3.09, 9.01, 8.99, -0.56}; int i, k = 0, n = 7; for (i = 0; i < n; i++){ if (a[i] < 0) continue; else ++k; } R. 7 156. Secvența următoare calculează în variabila k numărul de elemente pozitive din tabloul a. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcționări corecte. float a = {3, -2.06, 4.25, -3.09, 9.01, 8.99, -0.56}; int i, k = 0, n = 7; for (i = 0; i < n; i++){ if (.....) continue; else ++k; } R. a[i] < 0 157. Secvența următoare calculează în variabila k numărul de elemente pozitive din tabloul a. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru a obține o funcționare corectă. float a = {3, -2.06, 4.25, -3.09, 9.01, 8.99, -0.56}; int i, k = 0, n = 7; for (i = 0; i < n; i++){ if ( a[i] < 0 )........ ; else ++k; } R. continue sau nimic 158. Secvența următoare calculează în variabila k numărul de elemente pozitive din tabloul a. Secvența conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. float a = {3, -2.06, 4.25, -3.09, 9.01, 8.99, -0.56}; int i, k = 0, n = 7; for (i = 0; i < n; i++){ 41 if (a[i] < 0) break; else ++k; } R. break corect este continue (sau nimic) 159. Secvența următoare calculează în variabila k numărul de elemente pozitive din tabloul a. Care este cea mai mare valoare cu care trebuie să îl inițializăm pe n astfel încât, la finalul secvenței k să aibă valoarea 2 ? float a = {3, -2.06, 4.25, -3.09, 9.01, 8.99, -0.56}; int i, k = 0, n = ?; for (i = 0; i < n; i++){ if (a[i] < 0) continue; else ++k; } R. n = 4 160. Care este valoarea variabilei t la finalul secvenței următoare ? float a = {3, -2.06, 4.25, -3.09, 9.01, 8.99, -0.56}; int i, k = 0, n = 7, t = 0; for (i = 0; i < n; i++){ if (a[i] < 0){ continue; ++t; } else ++k; } R. t = 0 42 CURS 7 : Subiecte de examen G7.1. Fie macroul: #define max(A, B) ((A) > (B) ? (A) : (B)) a. acest macro va servi pentru orice tip de date b. acest macro funcţionează doar pentru tipuri de date întregi c. acest macro funcţionează doar pentru tipurile de date cu care au fost definite A şi B d. definiţia acestui macrou conţine erori de sintaxă G7.2. Fie macroul: #define max(A, B) ((A) > (B) ? (A) : (B)) a. acest macro funcţionează doar pentru tipuri de date întregi b. acest macro implică efecte colaterale c. acest macro funcţionează doar pentru tipurile de date cu care au fost definite A şi B d. definiţia acestui macrou conţine erori de sintaxă G7.3. Fie macroul: #define square(x) x * x a. acest macro funcţionează doar pentru tipuri de date virgulă mobilă b. acest macro conţine un bug c. acest macro funcţionează doar pentru tipurile de date cu care a fost definit x d. definiţia acestui macrou conţine erori de sintaxă G7.4. Specificator de format %p este utilizat … a. pentru tipărirea valorilor reprezentând adrese de memorie b. pentru tipărirea valorilor variabilelor register c. pentru tipărirea valorilor variabilelor în virgulă mobilă (floating point) d. pentru citirea valorilor variabilelor pointer G7.5. Pentru a atribui variabilei p de tip pointer valoarea adresei variabilei x se foloseşte …. a. p = adress(x); b. p = &x; c. p = *x; d. p = adr->x; G7.6. Pentru a obţine valoarea obiectului indicat de un pointer se utilizează operatorul de dereferenţiere sau de indirectare: ….. a. % b. (typecast) c. * d. & G7.7. int x, *p; Fie x = 3; a. se semnalează eroare b. se afişează adresa lui x p = &x; printf("%d", *p); c. se afişează adresa lui p d. se afişează 3 G7.8. Când se aplică operatorul * asupra unui pointer ptr declarat tip *ptr; expresia obţinută prin dereferenţiere ….. a. *ptr este de tipul tip b. &ptr este de tipul tip c. ptr este de tipul *tip d. *ptr este de tipul *tip G7.9. Fie secvenţa: int *i; *i = 10; a. i primeşte valoarea 10 b. secvenţa este incorectă c. valoarea de la adresa i devine 10 d. adresa lui i primeşte valoarea 10 G7.10. Fie secvența int x = 3, *p1, *p2; Care variantă este greşită? p1 = &x; a. s-a copiat conţinutul lui p1 în p2 p2 = p1; b. p2 şi p1 vor indica spre acelaşi obiect c. secvenţa este incorectă d. p2 va indica spre x G7.11. Expresia *ip+=1, nu este echivalentă cu: a. ++(*ip) b. (*ip)++ c. ++*ip d. *++ip G7.12. Operatorul & poate fi aplicat ….. 1 a. variabilelor de orice tip b. expresiilor c. constantelor d. variabilelor de tip register 13. Funcția următoare întoarce valoarea termenului Fibonacci(n). Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. long f(int n) { if (n 2) corect este if (n > 1) 16. Funcția următoare întoarce valoarea termenului Fibonacci(n). Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. long f(int n) { if (n > 1) return f(n-2) + f(n-1); else..... } R. return n; 17. Funcția următoare întoarce valoarea termenului Fibonacci(n). Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. long f(int n){ return.... ? n : f(n-1) + f(n-2); } R. n < 2 18. Ce returnează funcția următoare la apelul f(7)? long f(int n){ return ( n < 2 ? n : f(n-1) + f(n-2) ); } 2 R. 13 19. Ce returnează funcția următoare la apelul f(6)? long f(int n){ return n > 1 ? f(n-1) + f(n-2) : n; } R. 8 20. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze 13? long f(int n){ return n > 1 ? f(n-1) + f(n-2) : n; } R. 7 21. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze 8? long f(int n){ return n < 2 ? n : f(n-1) + f(n-2); } R. 6 22. Precizați scopul funcției f() de mai jos. long f(int n){ return n < 2 ? n : f(n-1) + f(n-2); } R. calculează recursiv termenul fibonacci (n) 23. Precizați scopul funcției f() de mai jos. long f(int n){ return n > 1 ? f(n-1) + f(n-2) : n; } R. calculează recursiv termenul fibonacci (n) 24. Precizați scopul funcției f() de mai jos. long f(int n){ if (n > 1) return f(n-1) + f(n-2); else return n; } R. calculează recursiv termenul fibonacci (n) 25. Precizați scopul funcției f() de mai jos. long f(int n){ if ( n < 2 ) return n; else return f(n-1) + f(n-2); } R. calculează recursiv termenul fibonacci (n) 3 26. Funcția următoare întoarce valoarea termenului Fibonacci(n). Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. long f(int n) { int i; long a = 1, b = 1, c; for (i = 0 ; i nume); printf(”Grupa: ”); scanf(”%f”, &p->grupa); p->urm = NULL; p->urm = prim; p = prim; return prim; } R. p = prim; corect este prim = p; 8. Fie declarația typedef struct student {char nume; float grupa; struct student *urm; } nod; Funcția următoare inserează un nod nou înaintea primului nod al listei de adresă prim. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. nod* f(nod* prim) { nod *p = (nod *)malloc(sizeof(nod)); printf(”Nume: ”); scanf(”%s”, p->nume); printf(”Grupa: ”); scanf(”%f”, &p->grupa); p->urm = NULL;....... prim = p; return prim; } R. p->urm = prim; 9. Fie declarația typedef struct student {char nume; float grupa; struct student *urm; } nod; Precizați scopul funcției f() de mai jos. nod* f(nod* prim) { nod *p = (nod *)malloc(sizeof(nod)); printf(”Nume: ”); scanf(”%s”, p->nume); printf(”Grupa: ”); scanf(”%f”, &p->grupa); p->urm = NULL; p->urm = prim; prim = p; return prim; } R. inserează un nod nou înaintea primului nod al listei de adresă prim. 10. Fie declarația typedef struct student {char nume; float grupa; struct student *urm; } nod; Funcția următoare inserează un nod nou la sfârșitul listei de adresă prim. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. nod* f(nod* prim) { nod *q, *p = (nod*)malloc(sizeof(nod)); printf(”Nume: ”); scanf(”%s”, p->nume); printf(”Grupa: ”); scanf(”%f”, &p->grupa); p->urm = NULL; if( prim == NULL ) prim = p; else { q = prim; while(q->urm != NULL) q = q->urm; p->urm = q; 2 } return prim; } R. p->urm = q; corect este q->urm = p; 11. Fie declarația typedef struct student {char nume; float grupa; struct student *urm; } nod; Funcția următoare inserează un nod nou la sfârșitul listei de adresă prim. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcții corecte. nod* f(nod* prim) { nod *q, *p = (nod*)malloc(sizeof(nod)); printf(”Nume: ”); scanf(”%s”, p->nume); printf(”Grupa: ”); scanf(”%f”, &p->grupa); p->urm = NULL; if( prim == NULL ) prim = p; else { q = prim; while(q->urm != NULL)...... q->urm = p; } return prim; } R. q = q->urm; 12. Fie declarația typedef struct student {char nume; float grupa; struct student *urm; } nod; Precizați scopul funcției f() de mai jos. nod* f(nod* prim) { nod *q, *p = (nod*)malloc(sizeof(nod)); printf(”Nume: ”); scanf(”%s”, p->nume); printf(”Grupa: ”); scanf(”%f”, &p->grupa); p->urm = NULL; if( prim == NULL ) prim = p; else { q = prim; while(q->urm != NULL) q = q->urm; q->urm = p; } return prim; } R. inserează un nod nou la sfârșitul listei de adresă prim. 13. Fie declarația typedef struct student {char nume; float grupa; struct student *urm; } nod; Secvența următoare afișează conținutul nodurilor unei liste simplu înlănțuite plecând de la primul nod de adresă prim. Secvența conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. q = prim; while( q != prim ){ printf("\n%s %.3f", q->nume, q->grupa); q = q->urm; } R. q != prim corect este q != NULL 14. Fie declarația typedef struct student {char nume; float grupa; struct student *urm; 3 } nod; Secvența următoare afișează conținutul nodurilor unei liste simplu înlănțuite plecând de la primul nod de adresă prim. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcționări corecte. q = prim; while( q != NULL ){ printf("\n%s %.3f", q->nume, q->grupa);...... } R. q = q->urm; 15. Fie declarația typedef struct student {char nume; float grupa; struct student *urm; } nod; pentru structura nodurilor unei liste liniare simplu înlănțuite de adresă prim..Precizați scopul secvenței de mai jos. q = prim; while( q != NULL ){ printf("\n%s %.3f", q->nume, q->grupa); q = q->urm; } R. secvența afișează conținutul nodurilor unei liste simplu înlănțuite plecând de la primul nod. 4 Subiecte de examen. CURS 10 G10.1. Alegeţi varianta greşită. O declaraţie typedef …. a. atribuie un nume unui tip existent b. nu creează un tip de dată nou c. creează un tip de dată nou d. crearea de noi nume de tipuri de date G10.2. Alegeţi varianta greşită. O uniune este… a. o variabilă care poate stoca la momente diferite obiecte de tipuri şi dimensiuni diferite b. o structură în care toţi membrii au deplasament zero faţă de adresa de început c. o singură variabilă care poate în mod legal să stocheze o valoare ce poate aparţine oricăruia dintr-o anumită colecţie de tipuri d. o variabilă care poate stoca în acelaşi timp obiecte de diferite tipuri şi dimensiuni G10.3. Care dintre următoarele patru tipuri de operaţii cu uniuni nu sunt permise: a. iniţializarea cu o valoare de tipul oricărui membru al său b. atribuirea sau copierea ca o unitate c. citirea adresei d. accesarea unui membru G10.4. Fie enum {CUVCHEIE = 01, EXTERN = 02, STATIC = 04} atunci indicatori |= EXTERN | STATIC; a. setează la 0 biţii EXTERN şi STATIC din indicatori b. setează la 1 biţii EXTERN şi STATIC din indicatori c. setează la 0 bitul EXTERN din indicatori d. setează la 0 bitul STATIC din indicatori G10.5. Fie enum {CUVCHEIE = 01, EXTERN = 02, STATIC = 04} atunci indicatori &= ~ (EXTERN | STATIC) a. setează la 1 biţii EXTERN şi STATIC din indicatori b. setează la 1 bitul EXTERN din indicatori c. setează la 0 biţii EXTERN şi STATIC din indicatori d. setează la 1 bitul STATIC din indicatori G10.6. Fie enum {CUVCHEIE = 01, EXTERN = 02, STATIC = 04} atunci if ((indicatori & (EXTERN | STATIC)) == 0) a. este adevărată dacă ambii biţi (EXTERN şi STATIC) din indicatori au valoarea 1 b. este adevărată dacă bitul EXTERN din indicatori are valoarea 1 c. este adevărată dacă bitul STATIC din indicatori are valoarea 1 d. este adevărată dacă ambii biţi (EXTERN şi STATIC) din indicatori au valoarea 0 G10.7. Alegeţi varianta greşită. Câmpurile de biţi … a. permit să li se aplice operatorul & b. nu pot fi declarate decât ca fiind de tipul int c. nu sunt tablouri d. nu au adrese G10.8. Funcţia main este apelată cu argumentele …. a. argc şi argv b. arg1 şi arg2 c. stdout şi stdin d. stdout, stdin şi stderr G10.9. Alegeţi varianta greşită. Apelul funcţiei main se face cu două argument argc şi argv, atunci a. argv este numele cu care este invocat programul b. argc este un pointer la un tablou de şiruri de caractere c. argc are cel puţin valoarea 1 d. argv[argc] trebuie să fie un pointer nul G10.10. Funcţia sprintf … a. este perfect similară cu printf b. lucrează exact ca printf, dar stochează rezultatul într-un fişier text c. este o combinaţie între funcţiile scanf şi printf d. lucrează exact ca printf, dar stochează rezultatul într-un şir de caractere 1 G11.11 Funcţia sscanf … a. este perfect similară cu scanf b. citeşte dintr-un şir de caractere în locul intrării standard c. lucrează exact ca scanf, dar citeşte intrarea dintr-un fişier text d. conţine şi alţi specificatori de format, în plus, faţă de scanf G11.12. Care dintre următoarele nu este un mod permis pentru a preciza cum se intenţionează a fi folosit fişierul deschis cu instrucţiunea fopen? a. ”a” b. ”w” c. ”r” d. ”x” 13. Secvența de cod următoare creează un nou nume Octet pentru tipul de dată unsigned char apoi citește și afișează o variabilă c de tipul Octet. Secvența conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. typedef Octet unsigned char; Octet c; c = getchar(); printf("%c", c); R. typedef Octet unsigned char; corect este typedef unsigned char Octet; 14. Secvența de cod următoare creează un nou nume Octet pentru tipul de dată unsigned char apoi citește și afișează o variabilă c de tipul Octet. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcționări corecte....... unsigned char Octet; Octet c; c = getchar(); printf("%c", c); R. typedef 15. Ce afișează secvența de cod următoare dacă se tastează a apoi ? typedef unsigned char Octet; Octet c; c = getchar(); printf("%d", c); R. 97 16. Ce valoare trebuie să tastăm astfel încât secvența de cod de mai jos să afișeze 65 ? typedef unsigned char Octet; Octet c; c = getchar(); printf("%d", c); R. A apoi 17. Precizați ce face secvența de cod de mai jos. typedef unsigned char Octet; Octet c; c = getchar(); printf("%c", c); R. creează un nou nume Octet pentru tipul de dată unsigned char apoi citește și afișează o variabilă c de tipul Octet. 2 18. Secvența de cod următoare citește notele la examenul de PCLP ale unui student și calculează media studentului la examenul de PCLP. Secvența conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. typedef Nota int; typedef float Media; Nota notaSubiect1Pclp, notaSubiect2Pclp; Media notaExamenPclp; printf("nota la primul subiect la PCLP : "); scanf("%d", ¬aSubiect1Pclp); printf("nota la al 2-lea subiect la PCLP : "); scanf("%d", ¬aSubiect2Pclp); notaExamenPclp = notaSubiect1Pclp + notaSubiect2Pclp; notaExamenPclp = notaExamenPclp/2; printf("\nnota examen scris PCLP : %5.2f\n", notaExamenPclp); R. typedef Nota int; corect este typedef int Nota; 19. Secvența de cod următoare citește notele la examenul de PCLP ale unui student și calculează media studentului la examenul de PCLP. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcționări corecte. typedef Nota int; typedef float Media; Nota notaSubiect1Pclp, notaSubiect2Pclp;......... printf("nota la primul subiect la PCLP : "); scanf("%d", ¬aSubiect1Pclp); printf("nota la al 2-lea subiect la PCLP : "); scanf("%d", ¬aSubiect2Pclp); notaExamenPclp = notaSubiect1Pclp + notaSubiect2Pclp; notaExamenPclp = notaExamenPclp/2; printf("\nnota examen scris PCLP : %5.2f\n", notaExamenPclp); R. Media notaExamenPclp; 20. Secvența de cod următoare citește notele la examenul de PCLP ale unui student și calculează media studentului la examenul de PCLP. Secvența conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. typedef int *pointerLaIntreg; typedef float *pointerLaReal; typedef int Nota; typedef float Medie; Nota nota1, nota2; Medie media; pointerLaIntreg notaSubiect1Pclp = ¬a1, notaSubiect2Pclp = ¬a2; pointerLaReal *notaExamenPclp = &media; printf("nota la primul subiect la PCLP:"); scanf("%d", notaSubiect1Pclp); printf("nota la al 2-lea subiect la PCLP:"); scanf("%d", notaSubiect2Pclp); *notaExamenPclp = *notaSubiect1Pclp + *notaSubiect2Pclp; *notaExamenPclp = *notaExamenPclp/2; printf("\nnota examen scris PCLP : %5.2f\n", *notaExamenPclp); R. pointerLaReal *notaExamenPclp = &media; corect este pointerLaReal notaExamenPclp = &media; 21. Secvența de cod următoare citește notele la examenul de PCLP ale unui student și calculează media studentului la examenul de PCLP. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcționări corecte. typedef int *pointerLaIntreg; typedef float *pointerLaReal; typedef int Nota; typedef float Medie; Nota nota1, nota2; Medie media;......... pointerLaReal notaExamenPclp = &media; printf("nota la primul subiect la PCLP:"); scanf("%d", notaSubiect1Pclp); 3 printf("nota la al 2-lea subiect la PCLP:"); scanf("%d", notaSubiect2Pclp); *notaExamenPclp = *notaSubiect1Pclp + *notaSubiect2Pclp; *notaExamenPclp = *notaExamenPclp/2; printf("\nnota examen scris PCLP : %5.2f\n", *notaExamenPclp); R. pointerLaIntreg notaSubiect1Pclp = ¬a1, notaSubiect2Pclp = ¬a2; 22. Secvența de cod următoare declară o structură de tip figuri geometrice (cerc, triunghi, dreptunghi) care memorează - folosind o uniune - pentru fiecare figură caracteristicile acesteia (rază sau laturi). Dacă variabila figura corespunde unui cerc cum se atribuie valoarea 10.01 razei sale? enum tip {CERC, TRIUNGHI, DREPTUNGHI}; struct figuri { enum tip tip_fig; union { float raza; struct { float l1, l2, l3; } triunghi ; struct { float l1, l2; } dreptunghi ; } caracteristici; } ; struct figuri figura; R. figura.caracteristici.raza = 10.01; 23. Secvența de cod următoare declară o structură de tip figuri geometrice (cerc, triunghi, dreptunghi) care memorează - folosind o uniune - pentru fiecare figură caracteristicile acesteia (rază sau laturi). Dacă variabila figura corespunde unui dreptunghi cum se atribuie valorile 10.01 și 20.02 laturilor sale? enum tip {CERC, TRIUNGHI, DREPTUNGHI}; struct figuri { enum tip tip_fig; union { float raza; struct { float l1, l2, l3; } triunghi ; struct { float l1, l2; } dreptunghi ; } caracteristici; } ; struct figuri figura; R. figura.caracteristici.dreptunghi.l1 = 10.01; figura.caracteristici.dreptunghi.l2 = 20.02; 24. Secvența de cod următoare declară o structură de tip figuri geometrice (cerc, triunghi, dreptunghi) care memorează - folosind o uniune - pentru fiecare figură caracteristicile acesteia (rază sau laturi). Dacă variabila figura corespunde unui triunghi cum se atribuie valorile 5.05, 10.01 și 20.02 laturilor sale? enum tip {CERC, TRIUNGHI, DREPTUNGHI}; struct figuri { enum tip tip_fig; union { float raza; struct { float l1, l2, l3; } triunghi ; struct { float l1, l2; } dreptunghi ; } caracteristici; } ; struct figuri figura; 4 R. figura.caracteristici.triunghi.l1 = 5.05; figura.caracteristici.triunghi.l2 = 10.01; figura.caracteristici.triunghi.l3 = 20.02; 25. Secvența de cod următoare declară ora, ziua, luna și anul unui eveniment folosind un câmp de biți. Ora este un număr între 0 și 24, ziua un număr între 0 și 31, luna un număr între 0 și 12, iar anul un număr între -15000 (i.e. 15000 î.Hr.) și 15000 ((i.e. 15000 d.Hr.). Completați punctele de suspensie pentru a obține un cod corespunzător unei declarații corecte care să nu ocupe în memorie mai mult de 4 octeți corespunzători lui sizeof(int). struct campDeBiti { unsigned int ora:.....; unsigned int zi : 5; unsigned int luna : 4; int an : 15; } ; R. minim 5 maxim 8 26. Secvența de cod următoare declară ora, ziua, luna și anul unui eveniment folosind un câmp de biți. Ora este un număr între 0 și 24, ziua un număr între 0 și 31, luna un număr între 0 și 12, iar anul un număr între -15000 (i.e. 15000 î.Hr.) și 15000 ((i.e. 15000 d.Hr.). Completați punctele de suspensie pentru a obține un cod corespunzător unei declarații corecte care să nu ocupe în memorie mai mult de 4 octeți corespunzători lui sizeof(int). struct campDeBiti { unsigned int ora: 5; unsigned int zi :.....; unsigned int luna : 4; int an : 15; } ; R. minim 5 maxim 8 27. Secvența de cod următoare declară ora, ziua, luna și anul unui eveniment folosind un câmp de biți. Ora este un număr între 0 și 24, ziua un număr între 0 și 31, luna un număr între 0 și 12, iar anul un număr între -15000 (i.e. 15000 î.Hr.) și 15000 ((i.e. 15000 d.Hr.). Completați punctele de suspensie pentru a obține un cod corespunzător unei declarații corecte care să nu ocupe în memorie mai mult de 4 octeți corespunzători lui sizeof(int). struct campDeBiti { unsigned int ora: 5; unsigned int zi : 5; unsigned int luna :.... ; int an : 15; } ; R. minim 4 maxim 7 28. Secvența de cod următoare declară ora, ziua, luna și anul unui eveniment folosind un câmp de biți. Ora este un număr între 0 și 24, ziua un număr între 0 și 31, luna un număr între 0 și 12, iar anul un număr între -15000 (i.e. 15000 î.Hr.) și 15000 ((i.e. 15000 d.Hr.). Completați punctele de suspensie pentru a obține un cod corespunzător unei declarații corecte care să nu ocupe în memorie mai mult de 4 octeți corespunzători lui sizeof(int). struct campDeBiti { unsigned int ora: 5; unsigned int zi : 5; unsigned int luna : 4; int an :...... ; } ; R. minim 15 maxim 18 5 Subiecte de examen. CURS 11 G11.1. Fluxurile de ieşire ataşate unui program sunt.... a. stderr şi stdout b. stderr, stdin şi stdout c. stderr şi stdin d. stdin şi stdout G11.2. Datele de ieşire scrise în stderr ….. a. apar pe ecran doar dacă ieşirea standard nu este redirecţionată b. apar în mod normal pe ecran chiar dacă ieşirea standard este redirecţionată c. apar în fluxul de ieşire către care este redirecţionată ieşirea standard d. sunt scrise totdeauna într-un fişier pe disc G11.3. Variabilele s şi t sunt de tipul char *. Funcţia strcat(s,t) …. a. concatenează n caractere ale lui t la sfârşitul lui s b. caută şirul t in şirul s şi returnează un pointer la poziţia în care l-a găsit sau NULL în caz contrar c. concatenează t la sfârşitul lui s d. caută şirul s in şirul t şi returnează un pointer la poziţia în care l-a găsit sau NULL în caz contrar G11.4. Variabilele s şi t sunt de tipul char *. Funcţia care concatenează şirul t la sfârşitul şirului s este … a. strcpy(s,t) b. strcmp(s,t) c. strncat(s,t) d. strcat(s,t) G11.5. Variabilele s şi t sunt de tipul char *. Funcţia care concatenează şirul t la sfârşitul şirului s este … a. strcat(s,t) b. strcat(t,s) c. strncat(s,t) d. strncat(t,s) G11.6. Variabilele s şi t sunt de tipul char *. Funcţia care compară două şiruri s şi t este … a. strcpy(s,t) b. strcmp(s,t) c. strcat(s,t) d. strchr(s,t) G11.7. Funcţia care caută un caracter c în şirul s şi returnează un pointer spre prima apariţie a lui c în s, sau NULL dacă nu apare este … a. strcat(c,s) b. strchr(c,s) c. strchr(s,c) d. strcmp(s,c) G11.8. Funcţia int system(const char *s) … a. afişează numele sistemului de operare şi versiunea acestuia b. afişează data sistemului c. afişează data sistemului şi permite modificarea acesteia d. execută comanda conţinută în şirul de caractere s, după care reia execuţia programului curent din punctul în care fusese oprită. G11.9. Logaritmul natural din x (x>0) se calculează folosind funcţia …. a. log(x) b. logn(x) c. log10(x) d. loge(x) G11.10. Modulul sau valoarea absolută a unui număr real x se calculează folosind funcţia …. a. mod(x) b. fabs(x) c. abs(x) d. absolute(x) 11. Ce face instrucțiunea system("date"); ? R. afișează data curentă a sistemului și cere actualizarea datei (dacă e cazul) 12. Ce rol are funcția abort() ? R. Generează terminarea anormală a programului 13. Care sunt diferențele și asemănările între funcțiile abort() și exit() ? R. asemănări: ambele termină programul; diferențe: abort îl termină anormal, exit îl termină normal 14. Ce tip de date au argumentele funcției abort() ? 1 R. void 15. Ce rol are funcția exit(); ? R. Generează terminarea normală a programului 16. La funcția exit() câte argumente întâlnim și ce tip de date au aceste argumentele ? R. un singur argument de tip int 17. Ce valoare a argumentului la funcția exit() specifică o terminare complet normală a programului ? R. 0 18. Ce afișează programul următor ? #include #include void f1(void); void f2(void); int main (){ atexit(f1); atexit(f2); } void f1(void){ printf("f1 "); } void f2(void){ printf("f2 "); } R. f2 f1 19. Ce afișează programul următor ? #include #include void f1(void); void f2(void); int main (){ atexit(f2); atexit(f1); } void f1(void){ printf("f1 "); } void f2(void){ printf("f2 "); } R. f1 f2 20. Ce afișează programul următor dacă se introduce de la tastatură valoarea 0 ? #include #include int main(){ int n; scanf("%d", &n); assert(n = 1); printf("%d", n); } R. programul se termină anormal apelând funcția abort() 21. Ce afișează programul următor dacă se introduce de la tastatură valoarea 1 ? #include #include int main(){ int n; scanf("%d", &n); assert(n = 1); printf("%d", n); 2 } R. 1 22. Ce afișează programul următor dacă se introduce de la tastatură valoarea -1 ? #include #define NDEBUG #include int main(){ int n; scanf("%d", &n); assert(n = 1); printf("%d", n); } R. -1 23. Ce afișează programul următor dacă se introduce de la tastatură valoarea 1 ? #include #define NDEBUG #include int main(){ int n; scanf("%d", &n); assert(n = 1); printf("%d", n); } R. 1 24. Ce afișează programul următor dacă se introduce de la tastatură valoarea -1 ? #include #undef NDEBUG #include int main(){ int n; scanf("%d", &n); assert(n = 1); printf("%d", n); } R. programul se termină anormal apelând funcția abort() 25. Ce afișează programul următor dacă se introduce de la tastatură valoarea 1 ? #include #undef NDEBUG #include int main(){ int n; scanf("%d", &n); assert(n = 1); printf("%d", n); } R. 1 26. În structura broken-down time de mai jos ce specifică membrul tm_sec și ce valori poate lua ? struct tm { int tm_sec; int tm_min; int tm_hour; 3 int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; R. secunde dupa minut, valori: 0..60 27. În structura broken-down time de mai jos ce specifică membrul tm_min și ce valori poate lua ? struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; R. minute dupa ora, valori: 0..59 28. În structura broken-down time de mai jos ce specifică membrul tm_hour și ce valori poate lua ? struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; R. ore de la miezul noptii, valori: 0..23 29. În structura broken-down time de mai jos ce specifică membrul tm_mday și ce valori poate lua ? struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; R. ziua din luna, valori: 1..31 30. În structura broken-down time de mai jos ce specifică membrul tm_mon și ce valori poate lua ? struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; 4 int tm_wday; int tm_yday; int tm_isdst; }; R. luna incepand de la ianuarie, valori: 0..11 31. Programul următor afișează câți ani au trecut de la 1 ianuarie 1970. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. #include #include main () { time_t a; a = time(); printf("%d", a /(3600*24*365)); } R. a = time(); corect este a = time(NULL); 32. Programul următor afișează câți ani au trecut de la 1 ianuarie 1970. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. #include #include main () { time_t a; a = time(); printf("%d", a /(24*365)); } R. printf("%d", a /(24*365)); corect este printf("%d", a /(3600*24*365)); 33. Programul următor afișează câți ani au trecut de la 1 ianuarie 1970. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcționări corecte. #include #include main () {..... a = time(NULL); printf("%d\n", a /(3600*24*365)); } R. time_t a; 34. Ce afișează programul următor ? #include #include main () { time_t a; a = time(NULL); printf("%d\n", a /(3600*24*365)); } R. câți ani au trecut de la 1 ianuarie 1970 35. Ce afișează programul următor ? #include #include main () { time_t a; a = time(NULL); printf("%d\n", a /(3600*24)); 5 } R. câte zile au trecut de la 1 ianuarie 1970 36. Ce reprezintă valoarea variabilei a la finalul programului următor: #include #include main () { time_t a; a = time(NULL); } R. câte secunde au trecut de la 1 ianuarie 1970 37. Programul următor afișează câți ani au trecut de la 1 ianuarie 1970. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. #include #include main () { time_t a = time(); printf("%d", a /(3600*24*365)); } R. time_t a = time(); corect este time_t a = time(NULL); 38. Programul următor afișează câți ani au trecut de la 1 ianuarie 1970. Programul conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă. #include #include main () { time_t a = time(); printf("%d", a /(24*365)); } R. printf("%d", a /(24*365)); corect este printf("%d", a /(3600*24*365)); 39. Programul următor afișează câți ani au trecut de la 1 ianuarie 1970. Completați punctele de suspensie pentru a obține un cod corespunzător unei funcționări corecte. #include #include main () {...... printf("%d\n", a /(3600*24*365)); } R. time_t a = time(NULL); 40. Ce afișează programul următor ? #include #include main () { time_t a = time(NULL); printf("%d\n", a /(3600*24*365)); } R. câți ani au trecut de la 1 ianuarie 1970 41. Ce afișează programul următor ? #include #include 6 main () { time_t a = time(NULL); printf("%d\n", a /(3600*24)); } R. câte zile au trecut de la 1 ianuarie 1970 42. Ce reprezintă valoarea variabilei a la finalul programului următor: #include #include main () { time_t a = time(NULL); } R. câte secunde au trecut de la 1 ianuarie 1970 43.Ce afișează programul următor? #include #include int main(){ time_t timp = time(NULL); printf("%s“, asctime(gmtime(&timp)) ); } R. Data ora UTC/GMT 44. Ce afișează programul următor? #include #include int main(){ time_t timp = time(NULL); printf("%s", asctime(localtime(&timp)) ); } R. Data ora locala 45. Ce afișează programul următor? #include #include int main(){ time_t timp = time(NULL); printf("%s", ctime(&timp) ); } R. Data ora locala 46. Ce afișează programul următor? #include #include main(void){ time_t acum = time(NULL); struct tm ora_curenta; ora_curenta = *localtime(&acum); ora_curenta.tm_min = ora_curenta.tm_sec = 0; double f = difftime(acum, mktime(&ora_curenta)); printf("%.f", f); } R. câte secunde au trecut din ora curentă 47. Ce afișează programul următor? 7 #include #include main(void){ time_t acum = time(NULL); struct tm ora_curenta; ora_curenta = *localtime(&acum); ora_curenta.tm_min = ora_curenta.tm_sec = 0; double f = difftime(acum, mktime(&ora_curenta)); printf("%.f", f/60); } R. câte minute au trecut din ora curentă 48. Ce afișează programul următor sub standardul C11? #include int main(){ for ( int i = 0; i