Documente Academic
Documente Profesional
Documente Cultură
N.B. Laboratorul 9 cuprinde întrebările din Cursurile 4-6 care vor apare pe biletele de la examen.
ÎNTREBĂRI CURS 4: Aplicații cu numere și tablouri de caractere. Funcţii. Variabile. Tipuri de date.
Constante
6. O variabilă automată apare când funcţia este apelată şi …… când se iese din funcţie.
a. îşi păstrează valoarea b. dispare c. devine zero d. nu dispare
1
8. Pentru o variabilă externă valoarea ei de dinainte de apelul unei funcţii care o modifică şi se termină ….
a. se păstrează b. se pierde c. devine incertă d. devine zero
9. O variabilă externă trebuie definită o singură dată în afara oricărei funcţii şi apoi obligatoriu declarată în
fiecare funcţie care doreşte să o acceseze.
a. adevărat b. fals
c. adevărat doar pentru variabilele declarate explicit cu extern d. variantele a, b, c sunt toate false
10. O variabilă locală dintr-o funcţie care apare numai când funcţia este apelată şi dispare când se iese din
funcţie se numeşte variabilă ………….
a. externă b. internă c. automată d. statică
11. O variabilă care este accesibilă tuturor funcţiilor şi îşi reţine valoarea chiar după ce funcţiile care au
modificat-o au returnat-o se numeşte variabilă ………….
a. statică b. dinamică c. automată d. externă
12. Pentru o variabilă externă ….. se referă la locul unde variabila este creată sau i se asociază spaţiu de stocare
în memoria calculatorului.
a. definirea b. declararea c. memorarea d. atribuirea
13. Pentru o variabilă externă ….. se referă la locurile unde este specificată natura variabilei, dar nu i se aloca
spaţiu de memorie.
a. definirea b. declararea c. iniţializarea d. atribuirea
16. Programul următor citește un număr n natural (n>1) și afișează dacă este prim sau nu. Exemple: n = 17 =>
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 <stdio.h>
main()
{
int n, i, prim = 0;
printf("Dati numarul = ");
scanf("%d",&n);
for ( i = 2; i <= n - 1; ++i )
if ( n%i == 0 ){
prim = 0;
break;
}
if ( prim )
printf("%d e prim\n", n);
2
else
printf("%d nu e prim\n", n);
}
17. Programul următor citește un număr n natural (n>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 <stdio.h>
main()
{
int n, i, prim = 1;
printf("Dati numarul = ");
scanf("%d",&n);
for ( i = 2; i <= n - 1; ++i )
if ( n%i == 0 )
..........
if ( prim )
printf("%d e prim\n", n);
else
printf("%d nu e prim\n", n);
}
R. prim = 0;
R. 0
19. Ce număr natural n (n>1) trebuie să citim de la tastatură astfel încât programul să afișeze 1 ?
#include <stdio.h>
main()
{
int n, i, x = 1;
printf("Dati numarul = ");
scanf("%d",&n);
for ( i = 2; i <= n - 1; ++i )
if ( n%i == 0 ){
x = 0;
break;
}
if ( x )
printf("1\n");
else
printf("0\n");
}
R. testează dacă un număr n citit este prim (afișând 1) sau nu e prim (afișând 0)
21. Programul următor citește un număr n natural și afișează dacă este prim sau nu. Exemple: n = 17 => 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 <stdio.h>
main()
{
int n, i, prim = 1;
printf("n = ");
scanf("%d",&n);
if( n == 0 || n == 1 )
prim = 0;
else
for ( i = 2; i <= n - 1; ++i )
if ( i%n == 0 ){
prim = 0;
break;
}
if ( prim )
printf("%d e prim\n", n);
else
printf("%d nu e prim\n", n);
}
22. Programul următor citește un număr n natural și afișează dacă este prim sau nu.. Exemple: n = 17 => 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 <stdio.h>
main()
{
int n, i, prim = 1;
printf("n = ");
scanf("%d",&n);
if( n == 0 || n == 1 )
prim = 0;
else
for ( i = 1; i <= n - 1; ++i )
if ( n%i == 0 ){
prim = 0;
4
break;
}
if ( prim )
printf("%d e prim\n", n);
else
printf("%d nu e prim\n", n);
}
23. Programul următor citește un număr n natural și afișează dacă este prim sau nu. Exemple: n = 17 => 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 <stdio.h>
main()
{
int n, i, prim = 1;
printf("n = ");
scanf("%d",&n);
if( n == 0 || n == 1 )
prim = 0;
else
for ( i = 2; i <= n; ++i )
if ( n%i == 0 ){
prim = 0;
break;
}
if ( prim )
printf("%d e prim\n", n);
else
printf("%d nu e prim\n", n);
}
24. Programul următor citește un număr n natural și afișează dacă este prim sau nu. Exemple: n = 17 => 17 e
prim; n = 77 => 77 nu e prim; n = 0 => 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 <stdio.h>
main()
{
int n, i, prim = 1;
printf("Dati numarul = ");
scanf("%d",&n);
if( ....... )
prim = 0;
else
for ( i = 2; i <= n - 1; ++i )
if ( n%i == 0 ){
prim = 0;
break;
}
if ( prim )
printf("%d e prim\n", n);
else
printf("%d nu e prim\n", n);
}
5
25. Programul următor citește un număr n natural (n>1) și afișează dacă este prim sau nu. Exemple: n = 17 =>
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 <stdio.h>
#include <math.h>
main()
{
int n, i, prim = 1;
printf("Dati numarul = ");
scanf("%d",&n);
if( n%2 == 1)
prim = 0;
else
for ( i = 3; i <= sqrt(n); i = i + 2 )
if ( n%i == 0 ){
prim = 0;
break;
}
if ( prim )
printf("%d e prim\n", n);
else
printf("%d nu e prim\n", n);
}
26. Programul următor citește un număr n natural (n>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 <stdio.h>
#include <math.h>
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);
}
6
for ( i = 3; i <= sqrt(n); i = i + 2 )
if ( n%i == 0 ){
x = 0;
break;
}
if ( x )
printf("1\n");
else
printf("0\n");
}
R. 1
29. Programul următor afișează toți divizorii unui număr n natural dat. Exemplu: n = 6 => 1, 2, 3, 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 <stdio.h>
main()
{
int n, i;
printf("n = "); scanf("%d",&n);
for ( i = 1; i < n; ++i )
if ( n%i == 0 )
printf("%d\n", i);
}
30. Programul următor afișează toți divizorii unui număr n natural dat. Exemplu: n = 6 => 1, 2, 3, 6.
Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n, i;
printf("n = "); scanf("%d",&n);
for ( i = 1; ...... ; ++i )
if ( n%i == 0 )
printf("%d\n", i);
}
7
R. i <= n
R. 17
R. 11
34. Programul următor afișează toți divizorii unui număr n natural dat. Exemplu: n = 12 => 1 12 2 6 3 4.
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 <stdio.h>
#include <math.h>
main()
{
int n, i;
printf("n = ");
scanf("%d",&n);
for ( i = 1; i <= sqrt(n); ++i )
if ( n%i == 0 ) {
printf("%d ", i);
if ( n%i != i )
printf("%d ", n/i);
}
}
8
R. if ( n%i != i ) corect este if ( n/i != i )
35. Programul următor afișează toți divizorii unui număr n natural dat. Exemplu: n = 12 => 1 12 2 6 3 4.
Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
#include <math.h>
main()
{
int n, i;
printf("n = ");
scanf("%d",&n);
for ( i = 1; i <= sqrt(n); ++i )
if ( n%i == 0 ) {
printf("%d ", i);
..............
printf("%d ", n/i);
}
}
R. if ( n/i != i )
R. nimic
R. 1122634
9
int n, i;
printf("n = ");
scanf("%d",&n);
for ( i = 1; i <= sqrt(n); ++i )
if ( n%i == 0 ) {
printf("%d", i);
if ( n/i != i )
printf("%d", n/i);
}
}
R. 8
40. Programul următor afișează toți divizorii unui număr n natural dat. Exemplu: n = 12 => 1 12 2 6 3 4.
Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
...............
main()
{
int n, i;
printf("n = ");
scanf("%d",&n);
for ( i = 1; i <= sqrt(n); ++i )
if ( n%i == 0 ) {
printf("%d ", i);
if ( n/i != i )
printf("%d ", n/i);
}
}
41. 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. 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 <stdio.h>
main()
{
int n, d, p;
printf("n = ");
scanf("%d",&n);
d = 1;
while ( n > 1 ){
if ( n%d == 0 ) {
p = 0;
while( n%d == 0 ){
++p;
10
n = n/d;
}
printf(p>1?"%d^%d":"%d", d, p);
if ( n > 1 )
printf(" * ");
}
++d;
}
}
R. d = 1; corect este d = 2;
42. 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. 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 <stdio.h>
main()
{
int n, d, p;
printf("n = ");
scanf("%d",&n);
d = 2;
while ( n > 1 ){
if ( n%d == 0 ) {
p = 1;
while( n%d == 0 ){
++p;
n = n/d;
}
printf(p>1?"%d^%d":"%d", d, p);
if ( n > 1 )
printf(" * ");
}
++d;
}
}
R. p = 1; corect este p = 0;
43. 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. 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 <stdio.h>
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;
}
}
11
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 <stdio.h>
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;
.........
}
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 <stdio.h>
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. 2^5 * 3
R. 2^5 * 3
R. nimic
49. Ce trebuie să citim pe intrare astfel încât programul următor să afișeze un singur număr prim ?
#include <stdio.h>
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;
}
}
50. Ce număr natural trebuie să citim pe intrare astfel încât programul următor să nu afișeze nimic ?
#include <stdio.h>
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
14
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;
}
}
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 <stdio.h>
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);
}
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 <stdio.h>
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);
}
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 <stdio.h>
main()
15
{
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);
}
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 <stdio.h>
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 <stdio.h>
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;
R. 12
R. 1 și orice altceva
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 <stdio.h>
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);
}
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.
17
#include <stdio.h>
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);
}
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 <stdio.h>
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;
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 <stdio.h>
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);
}
66. Programul următor convertește numărul n dat, din baza 10 în baza b (2 <= b <= 9) dată. Exemple: 5(10) =
101(2); 10(10) = 12(8). 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 <stdio.h>
main()
{
int n, b, nb = 0, z = 1, temp;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
temp = n;
while ( temp != 0 ){
nb = nb + z * (temp%b);
temp = temp/10;
z = z * 10;
}
printf("%d convertit in baza %d = %d", n, b, nb);
}
67. Programul următor convertește numărul n dat, din baza 10 în baza b (2 <= b <= 9) dată. Exemple: 5(10) =
101(2); 10(10) = 12(8). 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 <stdio.h>
main()
{
int n, b, nb = 0, z = 1, temp;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
temp = n;
while ( temp != 0 ){
nb = nb + z * (temp%b);
temp = temp/b;
z = z * b;
}
printf("%d convertit in baza %d = %d", n, b, nb);
}
68. Programul următor convertește numărul n dat, din baza 10 în baza b (2 <= b <= 9) dată. Exemple: 5(10) =
101(2); 10(10) = 12(8). 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 <stdio.h>
main()
19
{
int n, b, nb = 0, z = 1, temp;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
temp = n;
while ( temp != 0 ){
nb = nb + z * (temp%10);
temp = temp/b;
z = z * 10;
}
printf("%d convertit in baza %d = %d", n, b, nb);
}
69. Programul următor convertește numărul n dat, din baza 10 în baza b (2 <= b <= 9) dată. Exemple: 5(10) =
101(2); 10(10) = 12(8). Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să
funcționeze corect.
#include <stdio.h>
main()
{
int n, b, nb = 0, z = 1, temp;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
temp = n;
while ( temp != 0 ){
nb = nb + z * (temp%b);
temp = temp/b;
z = .............
}
printf("%d convertit in baza %d = %d", n, b, nb);
}
R. z * 10;
70. Programul următor convertește numărul n dat, din baza 10 în baza b (2 <= b <= 9) dată. Exemple: 5(10) =
101(2); 10(10) = 12(8). Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să
funcționeze corect.
#include <stdio.h>
main()
{
int n, b, nb = 0, z = 1, temp;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
temp = n;
while ( temp != 0 ){
nb = ..... + z * (temp%b);
temp = temp/b;
z = z * 10;
}
printf("%d convertit in baza %d = %d", n, b, nb);
}
R. nb
71. Programul următor convertește numărul n dat, din baza 10 în baza b (2 <= b <= 9) dată. Exemple: 5(10) =
101(2); 10(10) = 12(8). Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să
funcționeze corect.
#include <stdio.h>
main()
{
20
int n, b, nb = 0, z = 1, temp;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
temp = n;
while ( temp != 0 ){
nb = nb + z * (temp%b);
temp = temp/.....;
z = z * 10;
}
printf("%d convertit in baza %d = %d", n, b, nb);
}
R. b
73. Dacă pentru n se citește valoarea 14 ce valoare trebuie să citim pentru m astfel încât programul următor să
afișeze 16 ?
#include <stdio.h>
main()
{
int n, m, x = 0, p = 1;
printf("n = "); scanf("%d",&n);
printf("m = "); scanf("%d",&m);
while ( n != 0 )
x = x + p * (n%m), n = n/m, p = p * 10;
printf("%d", x);
}
R. 8
75. Programul calculează cmmmc(n, m) pentru două numere naturale nenule n şi m. 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 <stdio.h>
main()
21
{
int n, m, x, y, rest;
76. Programul calculează cmmmc(n, m) pentru două numere naturale nenule n şi m. Completați punctele de
suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n, m, x, y, rest;
R. n * m / x
R. 175
78. Dacă pentru n se citește valoarea 12 ce valoare trebuie să citim pentru m astfel încât programul să afișeze 12
?
#include <stdio.h>
main()
{
int n, m, x, y;
printf("n = "); scanf("%d",&n);
printf("m = "); scanf("%d",&m);
y = n * m;
while ( m )
22
x = n%m, n = m, m = x;
printf("%d", y / n);
}
R. 12 sau 1
79. Programul următor citește o variabilă b (2 <= b <= 9) reprezentând o bază de numerație și un număr nb în
acea bază. El afișează numărul nb convertit în baza 10. Exemplu: nb = 177, b = 8 => n(10) = 127. 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 <stdio.h>
main()
{
int n = 0, b, nb, z = 1;
printf("b = "); scanf("%d", &b);
printf("nb = "); scanf("%d", &nb);
while( nb ){
n = n + z * (nb%10);
nb = nb/b;
z = b * z;
}
printf("%d\n", n);
}
80. Programul următor citește o variabilă b (2 <= b <= 9) reprezentând o bază de numerație și un număr nb în
acea bază. El afișează numărul nb convertit în baza 10. Exemplu: nb = 177, b = 8 => n(10) = 127. 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 <stdio.h>
main()
{
int n = 0, b, nb, z = 1;
printf("b = "); scanf("%d", &b);
printf("nb = "); scanf("%d", &nb);
while( nb ){
n = n + z * (nb%10);
nb = nb/10;
z = z * 10;
}
printf("%d\n", n);
}
81. Programul următor citește o variabilă b (2 <= b <= 9) reprezentând o bază de numerație și un număr nb în
acea bază. El afișează numărul nb convertit în baza 10. Exemplu: nb = 177, b = 8 => n(10) = 127. Completați
punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n = 0, b, nb, z = 1;
printf("b = "); scanf("%d", &b);
printf("nb = "); scanf("%d", &nb);
while( nb ){
n = n + z * (nb%10);
nb = nb/10;
z =......;
}
printf("%d\n", n);
}
23
R. z * b
82. Programul următor citește o variabilă b (2 <= b <= 9) reprezentând o bază de numerație și un număr nb în
acea bază. El afișează numărul nb convertit în baza 10. Exemplu: nb = 177, b = 8 => n(10) = 127. Completați
punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n = 0, b, nb, z = 1;
printf("b = "); scanf("%d", &b);
printf("nb = "); scanf("%d", &nb);
while( nb ){
n = n + z * (nb%10);
nb = .....;
z = z * b;
}
printf("%d\n", n);
}
R. nb/10
R. 10
84. Dacă pentru b se citește valoarea 8 ce valoare trebuie să citim pentru nb astfel încât programul să afișeze 21
?
#include <stdio.h>
main()
{
int n = 0, b, nb, z = 1;
printf("b = "); scanf("%d", &b);
printf("nb = "); scanf("%d", &nb);
while( nb )
n = n + z * (nb%10), nb = nb/10, z = z * b;
printf("%d\n", n);
}
R. 25
85. Programul următor citește un număr n natural în baza 10 și afișează cifrele sale începând cu cifra cea mai
puțin semnificativă ale reprezentării sale într-o bază oarecare b (2 <= b <= 9). b se citește pe intrare.
Exemplu: n = 9301, b = 8 => 5 2 1 2 2. 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 <stdio.h>
main()
{
int n, b , c;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
24
while( n ){
c = n % b;
printf("%d ",c);
n = n % b;
}
}
R. n = n % b; corect este n = n / b;
86. Programul următor citește un număr n natural în baza 10 și afișează cifrele sale începând cu cifra cea mai
puțin semnificativă ale reprezentării sale într-o bază oarecare b (2 <= b <= 9). b se citește pe intrare.
Exemplu: n = 9301, b = 8 => 5 2 1 2 2. 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 <stdio.h>
main()
{
int n, b , c;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
while( n ){
c = n % 10;
printf("%d ",c);
n = n / b;
}
}
87. Programul următor citește un număr n natural în baza 10 și afișează cifrele sale începând cu cifra cea mai
puțin semnificativă ale reprezentării sale într-o bază oarecare b (2 <= b <= 9). b se citește pe intrare.
Exemplu: n = 9301, b = 8 => 5 2 1 2 2. Completați punctele de suspensie cu caracterele corespunzătoare
pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n, b , c;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
while( n ){
c = n % b;
printf("%d ",c);
........
}
}
R. n = n / b;
25
R. 1111
89. Dacă pentru n se citește valoarea 12 ce valoare trebuie să citim pentru b astfel încât programul să afișeze 41
?
#include <stdio.h>
main()
{
int n, b , c;
scanf("%d",&n);
scanf("%d",&b);
while( n ){
c = n % b;
printf("%d",c);
n = n / b;
}
}
R. 8
90. Programul următor citește un număr n natural în baza 10 ș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 = 9301, b =
8 => 5 2 1 2 2; n = 930, b = 16 => 2 A 3. 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 <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
while( n ){
c = n % 10;
printf(c < 10 ? "%d " : "%c ", c < 10 ? c : c + 55);
n = n / b;
}
}
91. Programul următor citește un număr n natural în baza 10 ș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 = 9301, b =
8 => 5 2 1 2 2; n = 930, b = 16 => 2 A 3. 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 <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
while( n ){
c = n % b;
printf(c < 10 ? "%d " : "%c ", c < 10 ? c : c + 55);
n = n / 10;
}
}
92. Programul următor citește un număr n natural în baza 10 ș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 = 9301, b =
26
8 => 5 2 1 2 2; n = 930, b = 16 => 2 A 3. Completați punctele de suspensie cu caracterele corespunzătoare
pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
while( n ){
c = .... ;
printf(c < 10 ? "%d " : "%c ", c < 10 ? c : c + 55);
n = n / b;
}
}
R. n % b
R. D 5
94. Dacă pentru n se citește valoarea 23 ce valoare trebuie să citim pentru b astfel încât programul să afișeze 71
?
#include <stdio.h>
main()
{
int n, b, c;
scanf("%d",&n);
scanf("%d",&b);
while( n ){
c = n % b;
printf(c < 10 ? "%d" : "%c", c < 10 ? c : c + 55);
n = n / b;
}
}
R. 16
95. Dacă pentru b se citește valoarea 16 ce valoare trebuie să citim pentru n astfel încât programul să afișeze 12
?
#include <stdio.h>
main()
{
int n, b, c;
scanf("%d",&n);
scanf("%d",&b);
while( n ){
c = n % b;
printf(c < 10 ? "%d" : "%c", c < 10 ? c : c + 55);
n = n / b;
27
}
}
R. 33
96. Programul următor citește un număr n natural în baza 8 ș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 = 022125, b
= 10 => 1039; n = 02655, b = 16 => DA5. 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 <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&n);
printf("b = "); scanf("%d",&b);
while ( n ){
c = n % 10;
if ( c < 10 )
printf("%d", c);
else
printf("%c", c + 55);
n /= b;
}
}
R. c = n % 10; corect este c = n % b;
97. Programul următor citește un număr n natural în baza 8 ș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 = 022125, b
= 10 => 1039; n = 02655, b = 16 => DA5. 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 <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&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. if( c <= 10 ) corect este if( c < 10 )
98. Programul următor citește un număr n natural în baza 8 ș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 = 022125, b
= 10 => 1039; n = 02655, b = 16 => DA5. 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 <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&n);
printf("b = "); scanf("%d",&b);
while ( n ){
c = n % b;
if ( c < 10 )
printf("%d", c);
else
28
printf("%c", c + 55);
n /= 10;
}
}
R. n /= 10; corect este n /= b;
99. Programul următor citește un număr n natural în baza 8 ș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 = 022125, b
= 10 => 1039; n = 02655, b = 16 => DA5. Completați punctele de suspensie cu caracterele corespunzătoare
pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&n);
printf("b = "); scanf("%d",&b);
while ( n ){
c = ... ;
if ( c < 10 )
printf("%d", c);
else
printf("%c", c + 55);
n /= b;
}
}
R. n % b
100. Programul următor citește un număr n natural în baza 8 ș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 = 022125, b
= 10 => 1039; n = 02655, b = 16 => DA5. Completați punctele de suspensie cu caracterele corespunzătoare
pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&n);
printf("b = "); scanf("%d",&b);
while ( n ){
c = n % b;
if ( c < 10 )
printf("%d", c);
else
printf("%c", .....);
n /= b;
}
}
R. c + 55
101. Ce afișează programul următor dacă se citește de la tastatură 0725 16 (0765 16)?
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&n);
printf("b = "); scanf("%d",&b);
while ( n ){
c = n % b;
if ( c < 10 )
printf("%d", c);
else
29
printf("%c", c + 55);
n /= b;
}
}
R. 5D1 (5F1)
102. Ce afișează programul următor dacă se citește de la tastatură 075 10 (065 10)?
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&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. 16 (35)
103. Ce afișează programul următor dacă se citește de la tastatură 075 2 (065 2)?
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&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. 101111 (101011)
104. Dacă pentru b se citește valoarea 16 ce valoare trebuie să citim pentru n astfel încât programul să afișeze
F3 (D2) ?
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&n);
printf("b = "); scanf("%d",&b);
while ( n ){
c = n % b;
if ( c < 10 )
printf("%d", c);
else
printf("%c", c + 55);
n /= b;
}
}
30
R. 077 (055)
105. Dacă pentru b se citește valoarea 10 ce valoare trebuie să citim pentru n astfel încât programul să afișeze
26 (44) ?
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&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. 076 (054)
106. Dacă pentru b se citește valoarea 2 ce valoare trebuie să citim pentru n astfel încât programul să afișeze
1111 (0101) ?
#include <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%o",&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. 017 (012)
107. 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. 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 <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%d",&n);
printf("b = "); scanf("%d",&b);
while ( n ){
c = n % b;
if ( c < 10 )
printf("%d", c);
else
printf("%c", c + 55);
n /= b;
}
}
31
R. scanf("%d",&n); corect era scanf("%x",&n);
108. 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. 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 <stdio.h>
main()
{
int n, b, c;
printf("n = "); scanf("%x",&n);
printf("b = "); scanf("%d",&b);
while ( n ){
c = n % 16;
if ( c < 10 )
printf("%d", c);
else
printf("%c", c + 55);
n /= b;
}
}
109. 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 <stdio.h>
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 <stdio.h>
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);
32
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 <stdio.h>
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;
}
}
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 <stdio.h>
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 <stdio.h>
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;
}
}
33
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 <stdio.h>
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. 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 <stdio.h>
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);
}
}
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 <stdio.h>
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) {
34
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;
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 <stdio.h>
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 <stdio.h>
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);
}
}
35
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 <stdio.h>
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;
++i;
if ( p < 10)
printf("%d", p);
else
printf("%c", p + 55);
}
}
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 <stdio.h>
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;
}
36
R. return s;
R. scad(x, y);
R. float a, float b
37
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 <stdio.h>
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 <stdio.h>
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;
}
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 <stdio.h>
int main()
{
enum zile { DUM = 1, LUN, MAR, MIE, JOI, VIN, SAM } zi;
enum zile ziua = DUM;
129. 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 <stdio.h>
int main()
{
enum zile {...., LUN, MAR, MIE, JOI, VIN, SAM } zi;
enum zile ziua = DUM;
for ( zi = DUM; zi <= SAM; ++zi)
printf("numarul zilei = %d\n", zi);
38
printf("ziua = %d\n", ziua);
return 0;
}
R. DUM = 1
R. numarul zilei = 5
numarul zilei = 6
ziua = 7
R. numarul zilei = 5
numarul zilei = 6
ziua = 0
R. numarul zilei = 0
numarul zilei = 0
R. numarul zilei = 6
numarul zilei = 7
39
ÎNTREBĂRI CURS 5: Declarații. Operatori. Controlul execuției programelor
1. Variabila reprezintă un obiect de date cu 4 caracteristici: numele, …., tipul de dată şi adresa de memorie.
a. atributul b. clasa de memorare c. valoarea d. intervalul de valori
2. Constanta 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ă
3. Constanta reprezintă un obiect de date cu 4 caracteristici: numele, …., tipul de dată şi adresa de memorie.
a. atributul b. clasa de memorare c. valoarea d. intervalul de valori
7. Valoarea unui întreg poate fi specificată în baza zece, în octal sau în ….. .
a. baza 2 b. codul ASCII c. hexazecimal d. cod complement faţă de doi
11. 0XFUL
a. în baza 10 este valoarea 16 b. este o constantă de tipul float
c. este o construcţie eronată d. este o constantă de tipul unsigned long
15. 'a' . . . . .
a. este acelaşi lucru cu "a" b. în codul ASCII are codul 97
c. este un tablou de caractere care conţine un litera a şi un '\0' d. în hexa are valoarea 10
40
16. De câte ori poate fi iniţializată o variabilă?
a. dacă variabila nu este automată, iniţializarea este făcută o singură dată cu o expresie variabilă
b. dacă variabila este automată, iniţializarea este făcută o singură dată cu o expresie variabilă
c. dacă variabila nu este automată, iniţializarea este făcută o singură dată cu o expresie constantă
d. dacă variabila este automată, iniţializarea este făcută o singură dată cu o expresie constantă
18. Prin definiţie, valoarea numerică a unei expresii relaţionale sau logice este …. dacă expresia este adevărată
şi 0 dacă expresia este falsă.
a. 1 b. 0 c. diferită de zero d. nedefinită
26. x = x | SET_ON;
a. pune pe 0 în x biţii care au valoarea 0 în SET_ON
b. pune pe 1 în x biţii care au valoarea 1 în SET_ON
c. pune pe 0 în x biţii care au valoarea 1 în SET_ON
d. pune pe 1 în x biţii care au valoarea 0 în SET_ON
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ă
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 <stdio.h>
int strlen(char s[]);
main()
{
char s1[20], 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[])
{
42
int i = 0;
while (s[i] != '\0')
++i;
return i;
}
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 <stdio.h>
int strlen(char s[]);
main()
{
char s1[20], 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;
}
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 <stdio.h>
int strlen(char s);
main()
{
char s1[20], 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;
}
43
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 <stdio.h>
int strlen(char s[]);
main()
{
char s1[20], 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 <stdio.h>
int strlen(char s[]);
main()
{
char s1[20], 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 <stdio.h>
int strlen(char s[]);
main()
{
char s1[20], c;
44
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 <stdio.h>
int strlen(char s[]);
main()
{
char s1[20], 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 <stdio.h>
int strlen(char s[]);
main()
{
char s1[20], 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;
}
int strlen(char s[])
{
45
int i = 0;
while (s[i] != '\0')
++i;
return i;
}
R. i++
main()
{
char s1[20], 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
main()
{
char s1[20], 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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
..........
}
R. return i;
48
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] <= '9'; ++i)
n = (s[i] - '0');
return n;
}
60. 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] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
}
R. s[i] >= '0' || s[i] <= '9' corect este s[i] >= '0' && s[i] <= '9'
61. 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] <= 9; ++i)
n = 10 * n + (s[i] - '0');
return n;
}
R. s[i] >= 0 && s[i] <= 9 corect este s[i] >= '0' && s[i] <= '9'
62. 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] <= '9'; ++i)
n = n + (s[i] - '0');
return n;
}
63. 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. Completați punctele de suspensie cu instrucțiunea
corespunzătoare pentru o funcție corectă.
int atoi(char s[])
{
int i, n = 0;
49
for (i = 0; ....... ; ++i)
n = 10 * n + (s[i] - '0');
return n;
}
R. 98
R. 0
R. 123
50
R. 6
R. 4
R. 12
R. 0
R. 45
51
74. Funcția următoare htoi(s), converteşte un şir de cifre hexazecimale (şirul putând include opţional un 0x
sau 0X) în valoarea întreagă echivalentă. Cifrele permise sunt: 0 până la 9, a până la f şi A până la F. Funcția
conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
unsigned long htoi(char s[])
{
unsigned long n = 0;
int c, i = 0;
if(s[0] == '0' || (s[1] == 'x' && s[1] == 'X'))
i = 2;
for (; s[i] != '\0'; ++i) {
c = s[i];
n *= 16;
if (c >= '0' && c <= '9')
n += c - '0';
else if (c >= 'a' && c <= 'f')
n += c - 'a' + 10;
else if (c >= 'A' && c <= 'F')
n += c - 'A' + 10;
}
return n;
}
75. Funcția următoare htoi(s), converteşte un şir de cifre hexazecimale (şirul putând include opţional un 0x
sau 0X) în valoarea întreagă echivalentă. Cifrele permise sunt: 0 până la 9, a până la f şi A până la F. Funcția
conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
unsigned long htoi(char s[])
{
unsigned long n = 0;
int c, i = 0;
if(s[0] == '0' && (s[1] == 'x' || s[1] == 'X'))
i = 3;
for (; s[i] != '\0'; ++i) {
c = s[i];
n *= 16;
if (c >= '0' && c <= '9')
n += c - '0';
else if (c >= 'a' && c <= 'f')
n += c - 'a' + 10;
else if (c >= 'A' && c <= 'F')
n += c - 'A' + 10;
}
return n;
}
R. i = 3; corect este i = 2;
76. Funcția următoare htoi(s), converteşte un şir de cifre hexazecimale (şirul putând include opţional un 0x
sau 0X) în valoarea întreagă echivalentă. Cifrele permise sunt: 0 până la 9, a până la f şi A până la F. Funcția
conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
unsigned long htoi(char s[])
{
unsigned long n = 0;
int c, i = 0;
if(s[0] == '0' && (s[1] == 'x' || s[1] == 'X'))
i = 2;
for (; s[i] != '0'; ++i) {
c = s[i];
n *= 16;
if (c >= '0' && c <= '9')
n += c - '0';
52
else if (c >= 'a' && c <= 'f')
n += c - 'a' + 10;
else if (c >= 'A' && c <= 'F')
n += c - 'A' + 10;
}
return n;
}
77. Funcția următoare htoi(s), converteşte un şir de cifre hexazecimale (şirul putând include opţional un 0x
sau 0X) în valoarea întreagă echivalentă. Cifrele permise sunt: 0 până la 9, a până la f şi A până la F. Funcția
conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
unsigned long htoi(char s[])
{
unsigned long n = 0;
int c, i = 0;
if(s[0] == '0' && s[1] == 'x' || s[1] == 'X')
i = 2;
for (; s[i]; ++i) {
c = s[i];
n *= 16;
if (c >= '0' && c <= '9')
n += c - '0';
else if (c >= 'a' && c <= 'f')
n += c - 'a' + 10;
else if (c >= 'A' && c <= 'F')
n += c - 'A' + 10;
}
return n;
}
78. Funcția următoare htoi(s), converteşte un şir de cifre hexazecimale (şirul putând include opţional un 0x
sau 0X) în valoarea întreagă echivalentă. Cifrele permise sunt: 0 până la 9, a până la f şi A până la F.
Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă.
unsigned long htoi(char s[])
{
unsigned long n = 0;
int c, i = 0;
if(s[0] == '0' && (s[1] == 'x' || s[1] == 'X'))
i = 2;
for (; s[i] != '\0'; ++i) {
c = s[i];
n *= 16;
if (........)
n += c - '0';
else if (c >= 'a' && c <= 'f')
n += c - 'a' + 10;
else if (c >= 'A' && c <= 'F')
n += c - 'A' + 10;
}
return n;
}
79. Funcția următoare htoi(s), converteşte un şir de cifre hexazecimale (şirul putând include opţional un 0x
sau 0X) în valoarea întreagă echivalentă. Cifrele permise sunt: 0 până la 9, a până la f şi A până la F.
Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă.
53
unsigned long htoi(char s[])
{
unsigned long n = 0;
int i = 0;
R. s[i] - '0'
R. converteşte un şir de cifre hexazecimale (şirul putând include opţional un 0x sau 0X) în valoarea întreagă
echivalentă
54
R. 18
R. 16
83. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze 18 ?
unsigned long f(char s[])
{
unsigned long n = 0;
int i = 0;
R. 0x12 sau 0X12 sau 12 sau oricare dintre cele trei urmate de litere mai mari decât f sau F sau urmate de
alte caractere
55
85. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei
corectă.
int lower(int c)
{
if (c >= 'A' || c <= 'Z')
return c + 'a' - 'A';
else
return c;
}
R. c >= 'A' || c <= 'Z' corect este c >= 'A' && c <= 'Z'
86. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei
corectă.
int lower(int c)
{
if (c >= 'a' && c <= 'z')
return c + 'a' - 'A';
else
return c;
}
R. c >= 'a' && c <= 'z' corect este c >= 'A' && c <= 'Z'
87. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei
corectă.
int lower(int c)
{
if (c >= 'A' && c <= 'Z')
return c + 'A' - 'a';
else
return c;
}
88. Rescrieți funcția lower() de mai jos înlocuind instrucțiunea if cu operatorul condițional ? : .
int lower(int c)
{
if (c >= 'A' && c <= 'Z')
return c + 'a' - 'A';
else
return c;
}
R. int lower(int c){ return c >= 'A' && c <= 'Z' ? c + 'a' - 'A' : c; }
56
90. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Funcția conține o secvență scrisă greșit. Scrieți secvența greșită și varianta ei corectă.
int lower(int c)
{
return c >= 'A' || c <= 'Z' ? c + 'a' - 'A' : c;
}
R. c >= 'A' || c <= 'Z' corect este c >= 'A' && c <= 'Z'
91. Funcția următoare f(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte caractere
nemodificate. Funcția conține o secvență scrisă greșit. Scrieți secvența greșită și varianta ei corectă.
int f(int c)
{
return c >= 'a' && c <= 'z' ? c + 'a' - 'A' : c;
}
R. c >= 'a' && c <= 'z' corect este c >= 'A' && c <= 'Z'
92. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Funcția conține o secvență scrisă greșit. Scrieți secvența greșită și varianta ei corectă.
int lower(int c)
{
return c >= 'A' && c <= 'Z' ? c + 'A' - 'a' : c;
}
93. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție
corectă.
int lower(int c)
{
if (..........)
return c + 'a' - 'A';
else
return c;
}
94. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție
corectă.
int lower(int c)
{
if (c >= 'A' && c <= 'Z')
return c +........;
else
return c;
}
R. 'a' - 'A'
95. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție
corectă.
int lower(int c)
{
57
if (c >= 'A' && c <= 'Z')
return c + 'a' - 'A';
else
............
}
R. return c;
96. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție
corectă.
int lower(int c)
{
return ........... ? c + 'a' - 'A' : c;
}
97. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție
corectă.
int lower(int c)
{
return c >= 'A' && c <= 'Z' ? c + ......... : c;
}
R. 'a' - 'A'
98. Funcția următoare lower(), converteşte un caracter majusculă la minusculă, lăsând minusculele și alte
caractere nemodificate. Completați punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție
corectă.
int lower(int c)
{
return c >= 'A' && c <= 'Z' ? c + 'a' - 'A' : ........;
}
R. c
R. pope123scu
100. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze 18 ?
int f(int c)
{
return c >= 'A' && c <= 'Z' ? c + 'a' - 'A' : c;
}
R. 18
R. pope123scu
102. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze 108 ?
int f(int c)
{
if (c >= 'A' && c <= 'Z')
return c + 'a' - 'A';
else
return c;
}
R. 108
104. Funcția următoare squeeze(s, c), îndepărtează toate aparițiile caracterului c din șirul s. Funcția conține
o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
void squeeze(char s[], int c)
{
int i, j;
105. Funcția următoare squeeze(s, c), îndepărtează toate aparițiile caracterului c din șirul s. Funcția conține
o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
void squeeze(char s[], int c)
{
int i, j;
106. Funcția următoare squeeze(s, c), îndepărtează toate aparițiile caracterului c din șirul s. Funcția conține
o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
59
void squeeze(char s[], int c)
{
int i, j;
107. Funcția următoare squeeze(s, c), îndepărtează toate aparițiile caracterului c din șirul s. Completați
punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă.
void squeeze(char s[], int c)
{
int i, j;
R. i = j = 0
108. Funcția următoare squeeze(s, c), îndepărtează toate aparițiile caracterului c din șirul s. Completați
punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă.
void squeeze(char s[], int c)
{
int i, j;
109. Funcția următoare squeeze(s, c), îndepărtează toate aparițiile caracterului c din șirul s. Completați
punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă.
void squeeze(char s[], int c)
{
int i, j;
R. s[i] != c
110. Funcția următoare squeeze(s, c), îndepărtează toate aparițiile caracterului c din șirul s. Completați
punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă.
void squeeze(char s[], int c)
{
int i, j;
60
if (s[i] != c)
..........
s[j] = '\0';
}
R. s[j++] = s[i];
111. Funcția următoare squeeze(s, c), îndepărtează toate aparițiile caracterului c din șirul s. Completați
punctele de suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă.
void squeeze(char s[], int c)
{
int i, j;
R. s[j] = '\0';
R. oescu
113. Dacă al doilea argument al funcției f() este ’i’, ce valoare trebuie să aibă primul argument pentru ca
apelul funcției f() să returneze om ?
void f(char s[], int c)
{
int i, j;
R. i...ioi...imi...i unde i poate apare de fiecare dată de 0 sau mai multe ori
115. Funcția următoare strcat(s, t), concatenează șirul t la finalul șirului s. Funcția conține o instrucțiune
scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
61
void strcat(char s[], char t[])
{
int i = 0, j = 0;
while (s[i] != '\0')
i++;
while ((s[i++] == t[j++]) != '\0');
}
116. Funcția următoare strcat(s, t), concatenează șirul t la finalul șirului s. Funcția conține o instrucțiune
scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
void strcat(char s[], char t[])
{
int i = 0, j = 0;
while (s[i] != '\0')
i++;
while ((s[i++] = t[i++]) != '\0');
}
117. Funcția următoare strcat(s, t), concatenează șirul t la finalul șirului s. Funcția conține o instrucțiune
scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
void strcat(char s[], char t[])
{
int i = 0, j = 0;
while (s[i] != '\0')
i++;
while ((s[i] = t[j]) != '\0');
}
118. Funcția următoare strcat(s, t), concatenează șirul t la finalul șirului s. Funcția conține o instrucțiune
scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
void strcat(char s[], char t[])
{
int i = 0, j = 0;
while (s[i] != '\0')
j++;
while ((s[i++] = t[j++]) != '\0');
}
119. Funcția următoare strcat(s, t), concatenează șirul t la finalul șirului s. Completați punctele de
suspensie cu instrucțiunea corespunzătoare pentru o funcție corectă.
void strcat(char s[], char t[])
{
int i = 0, j = 0;
while (s[i] != '\0')
.....
while ((s[i++] = t[j++]) != '\0');
}
R. i++;
120. Funcția următoare strcat(s, t), concatenează șirul t la finalul șirului s. Completați punctele de
suspensie cu secvența corespunzătoare pentru o funcție corectă.
62
void strcat(char s[], char t[])
{
int i = 0, j = 0;
while (s[i] != '\0')
i++;
while ((s[i++] =......) != '\0');
}
R. t[j++]
R. popescup
122. Dacă al doilea argument al funcției f() este ”r”, ce valoare trebuie să aibă primul argument pentru ca
apelul funcției f() să returneze programator ?
void f(char s[], char t[])
{
int i = 0, j = 0;
while (s[i] != '\0')
i++;
while ((s[i++] = t[j++]) != '\0');
}
R. programato
R. 7
R. 4
R. 3
R. 138
R. 134
R. 97
R. 74
130. Valoarea returnată de funcția f() următoare este obținută cu o transformare asupra biților numărului întreg
fără semn n. Care este această transformare?
unsigned f(unsigned n, int b)
{
return (n & ~(1 << b));
}
64
132. Ce face programul următor?
#include <stdio.h>
unsigned f(unsigned n, int b);
int main()
{
unsigned n = 170;
int b;
for( b = 15; b >=0; --b )
printf("%d ", f(n, b) );
return 0;
}
R. 1
R. 0
R. 1
R. 0
139. Înlocuiți punctele de suspensie cu secvența de cod corespunzătoare astfel încât funcția f() de mai jos să
determine valoarea bitului b din numărul întreg fără semn n.
unsigned f(unsigned n, int b)
{
return n ... 1 << b ? 1 : 0;
}
R. &
140. Înlocuiți punctele de suspensie cu secvența de cod corespunzătoare astfel încât funcția f() de mai jos să
determine valoarea bitului b din numărul întreg fără semn n.
unsigned f(unsigned n, int b)
{
if( n ... 1 << b )
return 1;
else
return 0;
}
R. &
141. Funcția f() de mai jos determină valoarea bitului b din numărul întreg fără semn n. Funcția conține o
greșeală. Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
return n & 1 >> b ? 1 : 0;
}
142. Funcția f() de mai jos determină valoarea bitului b din numărul întreg fără semn n. Funcția conține o
greșeală. Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
if( n & 1 >> b )
return 1;
else
return 0;
}
66
143. Funcția f() de mai jos determină valoarea bitului b din numărul întreg fără semn n. Funcția conține o
greșeală. Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
return n | 1 << b ? 1 : 0;
}
144. Funcția f() de mai jos determină valoarea bitului b din numărul întreg fără semn n. Funcția conține o
greșeală. Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
if( n | 1 << b )
return 1;
else
return 0;
}
int main()
{
unsigned n = 170;
int b = 2;
printf("%d ", f(n, b) );
return 0;
}
R. 174
R. 174
R. 21
R. 29
R. 30
150. Înlocuiți punctele de suspensie cu secvența de cod corespunzătoare astfel încât funcția f() de mai jos să
seteze bitul b din numărul întreg fără semn n la 1.
unsigned f(unsigned n, int b)
{
return (n .... 1 << b);
}
R. |
151. Înlocuiți punctele de suspensie cu secvența de cod corespunzătoare astfel încât funcția f() de mai jos să
seteze bitul b din numărul întreg fără semn n la 1.
unsigned f(unsigned n, int b)
{
return (n | 1 .... b);
}
R. <<
152. Funcția f() de mai jos setează bitul b din numărul întreg fără semn n la 1. Funcția conține o greșeală.
Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
return (n & 1 << b);
}
153. Funcția f() de mai jos setează bitul b din numărul întreg fără semn n la 1. Funcția conține o greșeală.
Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
return (n | 1 >> b);
}
68
155. Ce afișează programul următor?
#include <stdio.h>
unsigned f(unsigned n, int b);
int main()
{
unsigned n = 127;
printf("%d ", f(n, 6) );
return 0;
}
unsigned f(unsigned n, int b)
{
return n % (1 << b);
}
R. 63
R. 3
R. 1
R. 1
R. 5
69
R. 9
R. 6
R. 2
R. 15
R. 13
165. Înlocuiți punctele de suspensie cu secvența de cod corespunzătoare astfel încât funcția f() de mai jos să
întoarcă valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n.
unsigned f(unsigned n, int b)
{
return n % (1 ...... b);
}
R. <<
166. Înlocuiți punctele de suspensie cu secvența de cod corespunzătoare astfel încât funcția f() de mai jos să
întoarcă valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n.
unsigned f(unsigned n, int b)
{
return n ..... (1 << b);
}
R. %
167. Înlocuiți punctele de suspensie cu secvența de cod corespunzătoare astfel încât funcția f() de mai jos să
întoarcă valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n.
unsigned f(unsigned n, int b)
{
70
return n & ( (1 ...... b) - 1 );
}
R. <<
168. Înlocuiți punctele de suspensie cu secvența de cod corespunzătoare astfel încât funcția f() de mai jos să
întoarcă valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n.
unsigned f(unsigned n, int b)
{
return n ..... ( (1 << b) - 1 );
}
R. &
169. Funcția f() de mai jos întoarce valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n.
Funcția conține o greșeală. Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
return n % (1 >> b);
}
170. Funcția f() de mai jos întoarce valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n.
Funcția conține o greșeală. Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
return n / (1 << b);
}
171. Funcția f() de mai jos întoarce valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n.
Funcția conține o greșeală. Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
return n & ( (1 >> b) - 1 );
}
172. Funcția f() de mai jos întoarce valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n.
Funcția conține o greșeală. Scrieți greșeala și varianta ei corectă pentru ca funcția să lucreze corespunzător.
unsigned f(unsigned n, int b)
{
return n && ( (1 << b) - 1 );
}
R. întoarce valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n
71
174. Ce rol are funcția f() următoare?
unsigned f(unsigned n, int b)
{
return n % (1 << b);
}
R. întoarce valoarea ultimilor b biți din reprezentarea internă a unui număr întreg n
R. începînd din poziția p transformă în 0 n biți din x, iar ceilalți biți îi lasă nemodificați
R. 143
R. 195
R. 135
R. 3
R. returnează pe x cu cei n biţi care încep la poziţia p inversaţi (i.e. 1 schimbat în 0 şi 0 în 1), lăsând
ceilalţi biţi nemodificaţi
72
181. Ce returnează funcția următoare la apelul f(19, 4, 2)?
unsigned f(unsigned x, int p, int n)
{
unsigned mask = ~(~0U << n) << (p + 1 - n);
return x ^ mask;
}
R. 11
R. 143
R. 183
R. 19
73
R. 4
R. 8
R. 3
R. 6
R. 3
74
192. Ce returnează funcția următoare la apelul f(77)?
int f(unsigned x)
{
int b;
for (b = 0; x != 0; x &= (x - 1))
b++;
return b;
}
R. 4
R. 6
R. 4
195. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca funcția să lucreze
corespunzător.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while ( low <= high ) {
mid = (low + high)/2;
if (x < v[mid])
high = mid + 1;
else if (x > v[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
196. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca funcția să lucreze
corespunzător.
int binsearch(int x, int v[], int n)
75
{
int low, high, mid;
low = 0;
high = n - 1;
while ( low <= high ) {
mid = (low + high)/2;
if (x < v[mid])
high = mid - 1;
else if (x > v[mid])
low = mid - 1;
else
return mid;
}
return -1;
}
197. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca funcția să lucreze
corespunzător.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while ( low <= high ) {
mid = (low + high)/2;
if (x > v[mid])
high = mid - 1;
else if (x > v[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
R. if (x > v[mid]) high = mid - 1; corect este if (x < v[mid]) high = mid - 1;
198. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă pentru ca funcția să lucreze
corespunzător.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while ( low <= high ) {
mid = (low + high)/2;
if (x < v[mid])
high = mid - 1;
else if (x == v[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
76
199. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Completați punctele
de suspensie cu secvența de cod corespunzătoare pentru ca funcția să lucreze corect.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while ( low <= high ) {
mid = .....;
if (x < v[mid])
high = mid - 1;
else if (x > v[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
R. (low + high)/2
200. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Completați punctele
de suspensie cu secvența de cod corespunzătoare pentru ca funcția să lucreze corect.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while (low <= high) {
mid = ( low + high )/2;
if (x < v[mid])
high = ....;
else if (x > v[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
R. mid - 1
201. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Completați punctele
de suspensie cu secvența de cod corespunzătoare pentru ca funcția să lucreze corect.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while (low <= high) {
mid = ( low + high )/2;
if (x < v[mid])
high = mid - 1;
else if (x > v[mid])
low = .......;
else
return mid;
}
return -1;
}
R. mid + 1
77
202. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Completați punctele
de suspensie cu secvența de cod corespunzătoare pentru ca funcția să lucreze corect.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while ( low <= high ) {
mid = (low + high)/2;
if (x < v[mid])
high = mid - 1;
else if ( .... )
low = mid + 1;
else
return mid;
}
return -1;
}
R. x > v[mid]
203. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Completați punctele
de suspensie cu secvența de cod corespunzătoare pentru ca funcția să lucreze corect.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while ( low <= high ) {
mid = (low + high)/2;
if ( .... )
high = mid - 1;
else if ( x > v[mid] )
low = mid + 1;
else
return mid;
}
return -1;
}
R. x < v[mid]
204. Funcția următoare de căutare binară decide dacă o valoare particulară x apare în tabloul sortat crescător
v[], ea returnează poziția în care se află valoarea x, sau -1 dacă valoarea nu apare în v[]. Completați punctele
de suspensie cu secvența de cod corespunzătoare pentru ca funcția să lucreze corect.
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while ( .... ) {
mid = (low + high)/2;
if ( x < v[mid] )
high = mid - 1;
else if ( x > v[mid] )
low = mid + 1;
else
return mid;
}
return -1;
}
78
R. low <= high
205. Avem declarațiile int x = 12, n = 10, v[10] = {2, 3, 7, 10, 11, 12, 15, 18, 20, 21}; Ce
returnează funcția următoare la apelul f(x, v, n)?
int f(int x, int v[], int n)
{
int l = 0, h, m;
high = n - 1;
while ( l <= h ) {
m = (l + h)/2;
if ( x < v[m] )
h = m - 1;
else if ( x > v[m] )
l = m + 1;
else
return m;
}
return -1;
}
R. 5
206. Avem declarațiile int x = 12, n = 10, v[10] = {2, 3, 7, 10, 11, 13, 15, 18, 20, 21}; Ce
returnează funcția următoare la apelul f(x, v, n)?
int f(int x, int v[], int n)
{
int l = 0, h, m;
high = n - 1;
while ( l <= h ) {
m = (l + h)/2;
if ( x < v[m] )
h = m - 1;
else if ( x > v[m] )
l = m + 1;
else
return m;
}
return -1;
}
R. -1
207. Dacă int n = 10, v[10] = {2, 3, 7, 10, 11, 12, 15, 18, 20, 21}; Cât trebuie să fie valoarea
lui x astfel încât funcția să returneze 5?
int f(int x, int v[], int n)
{
int l = 0, h, m;
high = n - 1;
while ( l <= h ) {
m = (l + h)/2;
if ( x < v[m] )
h = m - 1;
else if ( x > v[m] )
l = m + 1;
else
return m;
}
return -1;
}
R. 12
79
208. Dacă int n = 10, v[10] = {2, 3, 7, 10, 11, 12, 15, 18, 20, 21}; Cât trebuie să fie valoarea
lui x astfel încât funcția să returneze -1?
int f(int x, int v[], int n)
{
int l = 0, h, m;
high = n - 1;
while ( l <= h ) {
m = (l + h)/2;
if ( x < v[m] )
h = m - 1;
else if ( x > v[m] )
l = m + 1;
else
return m;
}
return -1;
}
R. orice număr natural diferit de 2, 3, 7, 10, 11, 12, 15, 18, 20, 21
209. Dacă int n = 5, v[5] = {3, 7, 10, 15, 21}; Cât trebuie să fie valoarea lui x astfel încât funcția să
returneze 4?
int f(int x, int v[], int n)
{
int l = 0, h, m;
high = n - 1;
while ( l <= h ) {
m = (l + h)/2;
if ( x < v[m] )
h = m - 1;
else if ( x > v[m] )
l = m + 1;
else
return m;
}
return -1;
}
R. 21
210. Dacă int n = 5, v[5] = {3, 7, 10, 15, 21}; Cât trebuie să fie valoarea lui x astfel încât funcția să
returneze -1?
int f(int x, int v[], int n)
{
int l = 0, h, m;
high = n - 1;
while ( l <= h ) {
m = (l + h)/2;
if ( x < v[m] )
h = m - 1;
else if ( x > v[m] )
l = m + 1;
else
return m;
}
return -1;
}
80
211. Precizați scopul funcției de mai jos?
int f(int v, int x[], int n)
{
int s = 0, d, c;
d = n - 1;
while ( s <= d) {
c = ( s + d )/2;
if ( v < x[c] )
d = c - 1;
else if ( v > x[c] )
s = c + 1;
else
return c;
}
return -1;
}
R. Funcția f() de căutare binară decide dacă o valoare particulară v apare în tabloul sortat crescător x[], f()
returnează poziția în care se află valoarea v, sau -1 dacă valoarea nu apare în x[]
R. Funcția f()converteşte caracterele newline şi tab din șirul de caractere t[] în secvențe escape ”vizibile”:
\n şi \t, celelalte caractere le lasă nemodificate; rezultatul conversiei îl plasează în șirul de caractere s[].
213. Funcția următoare converteşte caracterele newline şi tab din șirul de caractere t[] în secvențe escape
”vizibile”: \n şi \t, celelalte caractere le lasă nemodificate; rezultatul conversiei îl plasează în șirul de
caractere s[]. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă
pentru ca funcția să se comporte corespunzător.
void escape(char s[], char t[])
{
int i = 0, j = 0;
for (; t[i] != '\0'; ++i) {
switch (t[i]) {
case '\n':
s[j++] = '\';
s[j++] = 'n';
break;
case '\t':
s[j++] = '\';
s[j++] = 't';
break;
default:
81
s[j++] = t[i];
break;
}
}
s[j] = '\0';
}
214. Funcția următoare unescape() convertește secvenţele escape ”vizibile”: \n şi \t din șirul de caractere
t[] în caracterele newline şi tab, celelalte caractere le lasă nemodificate și plasează șirul convertit în s[]. De
exemplu dacă afișarea lui t[] este a\tx\nb\tx\nc\tx\n adică a <tab> x <enter> b <tab> x <enter> c
<tab> x <enter> se obține o afișare pe trei linii: pe prima linie caracterul a separat prin caracterul <tab> de x,
pe a doua linie caracterul b separat prin caracterul <tab> de x, iar pe ultima linie caracterul c separat prin
caracterul <tab> de x (vezi imaginea). Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită
și varianta ei corectă pentru pentru ca funcția să se comporte corespunzător.
void unescape(char s[], char t[])
{
int i = 0, j = 0;
for (; t[i] != '\0'; ++i) {
if (t[i] == '\') {
switch (t[++i]) {
case 'n':
s[j++] = '\n';
break;
case 't':
s[j++] = '\t';
break;
case '\0':
default:
s[j++] = '\\';
--i;
break;
}
} else
s[j++] = t[i];
}
s[j] = '\0';
}
82
ÎNTREBĂRI CURS 6: Controlul execuției programelor. Funcții. Stiva
1. Se consideră o stivă în care iniţial au fost introduse, în această ordine, elementele cu valorile 1, 2 şi 3. Se
notează cu AD(x) operaţia prin care se adaugă elementul cu valoarea x în vârful stivei şi cu EL operaţia prin care
se elimină elementul din vârful stivei. Asupra acestei stive se execută următoarea secvenţă de operaţii: AD(4);
EL; AD(5); EL; AD(6); EL; EL. Care este valoarea elementului din vârful stivei în urma
executării acestei secvenţe de operaţii?
a. 2 b. 1 c. 5 d. 3
2. Se consideră o stivă în care iniţial au fost introduse, în această ordine, elementele cu valorile 1, 2 şi 3. Se
notează cu AD(x) operaţia prin care se adaugă elementul cu valoarea x în vârful stivei şi cu EL operaţia prin care
se elimină elementul din vârful stivei. Asupra acestei stive se execută următoarea secvenţă de operaţii: AD(4);
EL; AD(5); EL; AD(6); EL; EL. Care este suma valorilor elementelor aflate în stivă în urma
executării acestei secvenţe de operaţii?
a. 11 b. 3 c. 9 d. 15
5. Cât este valoarea lui i la ieşirea din ciclul for de mai jos?
for (i = 0; i < 10; i++)
printf(”i=%d\n”,i);
a. 9 b. 10 c. 11 d. niciuna din cele trei a., b., c.
9. Operatorul virgulă ….
a. nu există în C b. nu se utilizează niciodată în instrucţiunea for
c. se evaluează de la dreapta la stânga d. se evaluează de la stânga la dreapta
83
10. Funcţia void f(char s[])
{ a. inversează şirul de caractere s în el însuşi
int c, i, j; b. conţine o eroare în instrucţiunea for
for(i=0,j=strlen(s)-1; i<j; i++,j--) c. conţine două erori în instrucţiunea for
c = s[i], s[i] = s[j], s[j] = c;
} d. foloseşte greşit interschimbarea
R. convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de spații albe și poate
prezenta semnul + sau -.
16. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. 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, sign;
for (i = 0; isspace(s[i]); i++)
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
84
R. for (i = 0; isspace(s[i]); i++) corect este for (i = 0; isspace(s[i]); i++);
17. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. 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, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? 1 : -1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
18. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. 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, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] = '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
19. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. 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, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' && s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
R. if (s[i] == '+' && s[i] == '-') corect este if (s[i] == '+' || s[i] == '-')
20. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. 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, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? -1 : 1;
85
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + s[i];
return sign * n;
}
21. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. 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, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return n;
}
22. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int atoi(char s[])
{
int i, n, sign;
for (i = 0; isspace(......); i++);
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
R. s[i]
23. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int atoi(char s[])
{
int i, n, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == .... ) ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
R. '-'
86
24. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int atoi(char s[])
{
int i, n, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? .... : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
R. -1
25. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int atoi(char s[])
{
int i, n, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' ..... s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
R. ||
26. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int atoi(char s[])
{
int i, n, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
.......
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
R. i++;
27. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int atoi(char s[])
{
int i, n, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(......); i++)
87
n = 10 * n + (s[i] - '0');
return sign * n;
}
R. s[i]
28. Funcția următoare convertește un șir de caractere s[] la echivalentul său numeric; s[] poate fi prefixat de
spații albe și poate prezenta semnul + sau -. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int atoi(char s[])
{
int i, n, sign;
for (i = 0; isspace(s[i]); i++);
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return ......;
}
R. sign * n
R. -123
R. 0
88
n = 10 * n + (s[i] - '0');
return m * n;
}
R. 0
R. 12
R. 12
R. -12
35. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze 123?
int f(char s[])
{
int i, n, m;
for (i = 0; isspace(s[i]); i++);
m = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return m * n;
89
}
36. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze -3?
int f(char s[])
{
int i, n, m;
for (i = 0; isspace(s[i]); i++);
m = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return m * n;
}
37. Precizați scopul funcției f() de mai jos, știind că funcția reverse(s) inversează șirul s.
void f(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
38. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
{
int i, sign;
if ((sign == n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
39. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
90
{
int i, sign;
if (sign = n < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
40. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -1;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
41. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 1;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. i = 1; corect este i = 0;
42. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
{
int i, sign;
91
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10;
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
43. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. while (n > 0); corect este while ((n /= 10) > 0);
44. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (n < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
45. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
92
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[++i] = '-';
s[i] = '\0';
reverse(s);
}
46. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și
varianta ei corectă.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '0';
reverse(s);
}
47. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Completați punctele de suspensie pentru a obține un cod corespunzător
unei funcții corecte.
void itoa(int n, char s[])
{
int i, sign;
if ((.........) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. sign = n
48. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Completați punctele de suspensie pentru a obține un cod corespunzător
unei funcții corecte.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) ..... 0)
n = -n;
i = 0;
do {
93
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. <
49. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Completați punctele de suspensie pentru a obține un cod corespunzător
unei funcții corecte.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
........
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. n = -n;
50. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Completați punctele de suspensie pentru a obține un cod corespunzător
unei funcții corecte.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = .....;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. 0
51. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Completați punctele de suspensie pentru a obține un cod corespunzător
unei funcții corecte.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + ......;
} while ((n /= 10) > 0);
94
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. '0'
52. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Completați punctele de suspensie pentru a obține un cod corespunzător
unei funcții corecte.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= .....) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. 10
53. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Completați punctele de suspensie pentru a obține un cod corespunzător
unei funcții corecte.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) .... 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. >
54. Funcția itoa() următoare convertește un număr întreg n la un șir de caractere s; ea conține apelul funcției
reverse(s) care inversează șirul s. Completați punctele de suspensie pentru a obține un cod corespunzător
unei funcții corecte.
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign ....)
s[i++] = '-';
95
s[i] = '\0';
reverse(s);
}
R. < 0
55. Ce returnează funcția următoare la apelul f(-23); ea conține apelul funcției reverse(s) care inversează
șirul s?
void f(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. -23
56. Ce returnează funcția următoare la apelul f(+14); f conține apelul funcției reverse(s) care inversează
șirul s?
void f(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. 14
57. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze 10; f conține apelul funcției
reverse(s) care inversează șirul s?
void f(int n, char s[])
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
R. 10 sau +10
96
58. Precizați scopul funcției f() de mai jos?
int f(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
R. șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și întoarce lungimea
șirului rezultat după ștergere
59. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea
greșită și varianta ei corectă.
int trim(char s[])
{
int n;
for (n = strlen(s); n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
60. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea
greșită și varianta ei corectă.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n > 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
61. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea
greșită și varianta ei corectă.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n++)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
97
62. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea
greșită și varianta ei corectă.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' || s[n] != '\t' || s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
63. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea
greșită și varianta ei corectă.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] == ' ' || s[n] == '\t' || s[n] == '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
64. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Funcția conține o instrucțiune scrisă greșit. Scrieți instrucțiunea
greșită și varianta ei corectă.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n] = '\0';
return n + 1;
}
65. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int trim(char s[])
{
int n;
for (n = ......; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
R. strlen(s)-1
98
66. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; ......; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
R. n >= 0
67. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (...... && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
68. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
......
s[n + 1] = '\0';
return n + 1;
}
R. break;
69. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
..... = '\0';
return n + 1;
}
R. s[n + 1]
99
70. Funcția următoare șterge blank-urile, tab-urile şi newline-urile de la sfârșitul unui șir de caractere s[]și
întoarce lungimea șirului rezultat după ștergere. Completați punctele de suspensie pentru a obține un cod
corespunzător unei funcții corecte.
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] =.....;
return n + 1;
}
R. '\0'
R. 3
72. Dacă s conține șirul "abc\n\t " care este conținutul lui s după apelul f(s)?
int f(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
R. abc
73. Dacă s conține șirul "\n\t abc" care este conținutul lui s după apelul f(s)?
int f(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
R. "\n\t abc"
74. Dacă s conține șirul "\n\t abc\n\t " care este conținutul lui s după apelul f(s)?
int f(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
100
s[n + 1] = '\0';
return n + 1;
}
R. "\n\t abc"
75. Dacă s conține șirul "\n\t abc\n\t " care este valoarea returnată de funcția f() după apelul f(s)?
int f(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n + 1] = '\0';
return n + 1;
}
R. 6
76. Care este valoarea variabilei found după parcurgerea secvenței de cod următoare:
int found = 0, i, j, n = 5, m = 5, a[10] = {1, -2, 5, 8, 7}, b[7] = {2, 9, -1, 4, 8};
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (a[i] == b[j])
found = 1;
R. 1
77. Care este valoarea variabilei i după parcurgerea secvenței de cod următoare:
int found = 0, i, j, n = 5, m = 5, a[10] = {1, -2, 5, 8, 7}, b[7] = {2, 9, -1, 4, 8};
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (a[i] == b[j])
found = 1;
R. 4
78. Care este valoarea variabilei j după parcurgerea secvenței de cod următoare:
int found = 0, i, j, n = 5, m = 5, a[10] = {1, -2, 5, 8, 7}, b[7] = {2, 9, -1, 4, 8};
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (a[i] == b[j])
found = 1;
R. 5
79. Care este valoarea elementului b[j] după parcurgerea secvenței de cod următoare:
int found = 0, i, j, n = 5, m = 5, a[10] = {1, -2, 5, 8, 7}, b[7] = {2, 9, -1, 4, 8};
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (a[i] == b[j])
found = 1;
R. 0
80. Care este valoarea elementului a[i] după parcurgerea secvenței de cod următoare:
int found = 0, i, j, n = 5, m = 5, a[10] = {1, -2, 5, 8, 7}, b[7] = {2, 9, -1, 4, 8};
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
101
if (a[i] == b[j])
found = 1;
R. 7
81. Precizați scopul secvenței de cod de mai jos, dacă a și b sunt două tablouri unidimensionale de n, respectiv
m elemente.
found = 0;
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (a[i] == b[j])
found = 1;
82. Secvența următoare determină dacă două tablouri unidimensionale a[] şi b[] de n, respectiv m elemente au
un element în comun. Secvența conține o instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei
corectă.
found = 0;
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (a[i] = b[j])
found = 1;
83. Secvența următoare determină dacă două tablouri unidimensionale a[] şi b[] de n, respectiv m elemente au
un element în comun. Completați punctele de suspensie pentru a obține un cod corespunzător unei secvențe
corecte.
found = 0;
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (.....)
found = 1;
R. a[i] == b[j]
84. Dacă avem declarația int n = 5, m = 5, x[10] = {1, -2, 5, 8, 7}, y[7] = {2, 9, -1, 4, 8};
Ce returnează funcția următoare la apelul f(x, n, y, m)?
int f(int a[], int na, int b[], int nb)
{
int i, j;
for(i = 0; i < na; i++)
for(j = 0; j < nb; j++)
if(a[i] == b[j])
return i;
return -1;
}
R. 3
85. Dacă avem declarația int x[10] = {1, -2, 5, 18, 7}, y[7] = {2, 9, -1, 4, 8}; Ce returnează
funcția următoare la apelul f(x, 5, y, 5)?
int f(int a[], int na, int b[], int nb)
{
int i, j;
for(i = 0; i < na; i++)
for(j = 0; j < nb; j++)
102
if(a[i] == b[j])
return i;
return -1;
}
R. -1
86. Dacă avem declarația int x[10] = {1, -2, 5, 8, 7}, y[7] = {2, 9, -1, 4, 8}; Cu ce valoare
pentru n trebuie să apelăm funcția f(x, n, y, 5) astfel încât aceasta să returneze -1 ?
int f(int a[], int na, int b[], int nb)
{
int i, j;
for(i = 0; i < na; i++)
for(j = 0; j < nb; j++)
if(a[i] == b[j])
return i;
return -1;
}
R. 3, 2, 1 sau 0
87. Dacă avem declarația int x[10] = {1, -2, 5, 8, 7}, y[7] = {2, 9, -1, 4, 8}; Cu ce valoare
pentru m trebuie să apelăm funcția f(x, 5, y, m) astfel încât aceasta să returneze -1 ?
int f(int a[], int na, int b[], int nb)
{
int i, j;
for(i = 0; i < na; i++)
for(j = 0; j < nb; j++)
if(a[i] == b[j])
return i;
return -1;
}
R. 4, 3, 2, 1 sau 0
88. Dacă avem declarația int x[10] = {1, -2, 5, 8, 7}, y[7] = {2, 9, -1, 4, 8}; Ce valori poate
lua n în apelul f(x, n, y, 5) astfel încât funcția f() să returneze o valoare diferită de -1 ?
int f(int a[], int na, int b[], int nb)
{
int i, j;
for(i = 0; i < na; i++)
for(j = 0; j < nb; j++)
if(a[i] == b[j])
return i;
return -1;
}
R. o valoare întreagă mai mare sau egală cu 4 și mai mică sau egală cu 10
89. Dacă avem declarația int x[10] = {1, -2, 5, 8, 7}, y[7] = {2, 9, -1, 4, 8}; Ce valori poate
lua m în apelul f(x, 5, y, m) astfel încât funcția f() să returneze o valoare diferită de -1 ?
int f(int a[], int na, int b[], int nb)
{
int i, j;
for(i = 0; i < na; i++)
for(j = 0; j < nb; j++)
if(a[i] == b[j])
return i;
return -1;
}
103
R. o valoare întreagă mai mare sau egală cu 5 și mai mică sau egală cu 7
90. Funcția următoare determină dacă două tablouri unidimensionale de numere întregi x[] şi y[] de n,
respectiv m elemente, au un element în comun, returnând poziția din tabloul x[] a elementului comun, respectiv
-1, dacă cele două tablouri nu au niciun element în comun. Funcția conține o instrucțiune scrisă greșit. Scrieți
instrucțiunea greșită și varianta ei corectă.
int f(int x[], int n, int y[], int m)
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
if(x[i] = y[j])
return i;
return -1;
}
91. Funcția următoare determină dacă două tablouri unidimensionale de numere întregi x[] şi y[] de n,
respectiv m elemente, au un element în comun, returnând poziția din tabloul x[] a elementului comun, respectiv
-1, dacă cele două tablouri nu au niciun element în comun. Funcția conține o instrucțiune scrisă greșit. Scrieți
instrucțiunea greșită și varianta ei corectă.
int f(int x, int n, int y, int m)
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
if(x[i] == y[j])
return i;
return -1;
}
R. int f(int x, int n, int y, int m) corect este int f(int x[], int n, int y[], int m)
92. Funcția următoare determină dacă două tablouri unidimensionale de numere întregi x[] şi y[] de n,
respectiv m elemente, au un element în comun, returnând poziția din tabloul x[] a elementului comun, respectiv
-1, dacă cele două tablouri nu au niciun element în comun. Funcția conține o instrucțiune scrisă greșit. Scrieți
instrucțiunea greșită și varianta ei corectă.
int f(int x[], int n, int y[], int m);
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
if(x[i] == y[j])
return i;
return -1;
}
R. int f(int x[], int n, int y[], int m); corect este int f(int x[], int n, int y[], int m)
93. Funcția următoare determină dacă două tablouri unidimensionale de numere întregi x[] şi y[] de n,
respectiv m elemente, au un element în comun, returnând poziția din tabloul x[] a elementului comun, respectiv
-1, dacă cele două tablouri nu au niciun element în comun. Completați punctele de suspensie pentru a obține un
cod corespunzător unei secvențe corecte.
int f(int x[], int n, int y[], int m)
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
if(x[i] == y[j])
104
......
return -1;
}
R. return i;
94. Funcția următoare determină dacă două tablouri unidimensionale de numere întregi x[] şi y[] de n,
respectiv m elemente, au un element în comun, returnând poziția din tabloul x[] a elementului comun, respectiv
-1, dacă cele două tablouri nu au niciun element în comun. Completați punctele de suspensie pentru a obține un
cod corespunzător unei secvențe corecte.
int f(int x[], int n, int y[], int m)
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
if(x[i] == y[j])
return i;
.......
}
R. return -1;
96. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isdigit(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
105
return s * n / z;
}
97. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '+') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
98. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? 1 : -1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
99. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' && sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
106
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. if (sir[i] == '-' && sir[i] == '+') corect este if (sir[i] == '-' || sir[i] == '+')
100. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i--;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
101. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isspace(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
102. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
107
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i--;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
103. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z /= 10;
}
return s * n / z;
}
104. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Funcția conține o
instrucțiune scrisă greșit. Scrieți instrucțiunea greșită și varianta ei corectă.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s / n * z;
}
108
105. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0;..........; i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. isspace(sir[i])
106. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
.........
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. int i, s;
107. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? ....;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
109
return s * n / z;
}
R. -1 : 1
108. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (........|| sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. sir[i] == '-'
109. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || ....)
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. sir[i] == '+'
110. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0;.........; i++)
n = 10.0 * n + (sir[i] - '0');
110
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. isdigit(sir[i])
111. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + ......;
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. (sir[i] - '0')
112. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == .... )
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. '.'
113. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
111
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
.......
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. i++;
114. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; .....; i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. isdigit(sir[i])
115. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
......
}
return s * n / z;
}
R. z *= 10;
112
116. Funcția următoare convertește un șir de caractere la numărul real corespunzător. Completați punctele de
suspensie pentru a obține un cod corespunzător unei funcții corecte.
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return .....;
}
R. s * n / z
R. -123.25
119. Cu ce valoare trebuie să apelăm funcția f() astfel încât aceasta să returneze 17.07 ?
double f(char sir[])
{
double n, z;
int i, s;
for (i = 0; isspace(sir[i]); i++);
s = (sir[i] == '-') ? -1 : 1;
if (sir[i] == '-' || sir[i] == '+')
i++;
for (n = 0.0; isdigit(sir[i]); i++)
n = 10.0 * n + (sir[i] - '0');
if (sir[i] == '.')
i++;
for (z = 1.0; isdigit(sir[i]); i++) {
n = 10.0 * n + (sir[i] - '0');
z *= 10;
}
return s * n / z;
}
R. returnează poziția primei apariții a șirului y[] în șirul x[], sau -1 dacă y[] nu apare în x[]
121. 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. 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')
114
return i;
}
return -1;
}
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;
}
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;
}
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;
}
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')
115
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;
116
}
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]
R. 2
117
R. -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. 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;
118
}
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;
}
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;
}
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;
}
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[])
{
119
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;
}
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
120
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
R. 4
R. 0
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;
122
}
R. 4
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[10] = {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[10] = {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;
}
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[10] = {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++){
123
if (a[i] < 0)
break;
else
++k;
}
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[10] = {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
R. t = 0
124