Professional Documents
Culture Documents
N.B. Laboratorul 8 cuprinde întrebările din Cursurile 1-3 care vor apare pe biletele de la examen.
2. Ce este vocabularul?
a. totalitatea regulilor de scriere corectă a programelor b. semnificaţia construcţiilor corecte din punct de
vedere sintactic c. codul programului d. totalitatea cuvintelor care pot fi folosite într-un limbaj de
programare
3. Ce este sintaxa?
a. codul programului b. totalitatea construcţiilor corecte c. totalitatea regulilor de scriere corectă a
programelor d. notația sistematică pentru descrierea unui proces
4. Ce este semantica?
a. notația sistematică pentru descrierea unui proces b. semnificaţia construcţiilor corecte din punct de
vedere sintactic c. totalitatea regulilor de scriere corectă a programelor d. codul unui program
5. Cum se numeşte notația sistematică pentru descrierea unui proces de calcul într-un computer?
a. limbaj de programare b. vocabular c. sintaxă d. semantică
6. Scrierea programului presupune specificarea exactă și detaliată a paşilor şi a ….. acestora pentru prelucrarea
datelor
a. semanticii b. ordinii c. sintaxei d. codului
7. Scrierea programului presupune specificarea exactă și detaliată a ….. şi a ordinii acestora pentru prelucrarea
datelor
a. paşilor b. cuvintelor c. octeţilor d. proceselor
8. Scrierea programului presupune specificarea exactă și detaliată a paşilor şi a ordinii acestora pentru ….
a. citirea datelor b. scrierea datelor c. prelucrarea datelor d. citirea şi scrierea datelor
11. Programarea calculatoarelor este acţiunea de scriere a ….. într-un limbaj de programare.
a. datelor de intrare b. datelor de ieşire c. codului programului d. structurilor de date
13. Limbajele de programare care sunt înţelese direct de către calculatoare se numesc …….
a. limbaje pseudocod b. limbaje cod-maşină c. limbaje de nivel mediu d. limbaje de asamblare
14. Limbajele de programare care sunt apropiate de limbajul uman se numesc …….
a. limbaje de asamblare b. limbaje evoluate c. limbaje de nivel înalt d. limbaje cod-maşină
21. Un algoritm este un set finit de ….. care transformă un set de date de intrare într-un set de date de ieşire.
a. componente soft b. operaţii de memorie c. informaţii d. operaţii de prelucrare
32. De ce este reprezentat pasul înainte pe care îl face programarea orientată obiect în programarea
procedurală?
a. elimină procedurile din interiorul claselor și al obiectelor
b. orientează programarea spre obiectele supuse prelucrării: variabile și constante
c. încapsulează datele în funcții pe care le numește obiecte
d. încapsulează datele și funcțiile asociate acestora într-un concept unic: clasa.
34. Care dintre algoritmii de mai jos interschimbă valorile a două variabile întregi a și b?
a. b. c. d.
întreg a, b, x întreg a, b întreg a, b, x întreg a, b
citeşte a, b citeşte a, b citeşte a, b citeşte a, b
x <- a b <- a a <- x a <- b
a <- b a <- b x <- b b <- a
b <- x scrie a, b b <- a scrie a, b
scrie a, b scrie a, b
35. Care dintre algoritmii de mai jos nu afișează maximum dintre două variabile reale a și b?
a. b. c. d.
real a, b, max real a, b real a, b real a, b, max
citeşte a, b citeşte a, b citeşte a, b citeşte a, b
dacă a > b dacă a > b dacă a > b max <- a
atunci max <- a atunci a <- b atunci a <- a dacă b > max
altfel max <- b sfârşit dacă altfel a <- b atunci max <- b
sfârşit dacă scrie a sfârşit dacă sfârşit dacă
scrie max scrie a scrie max
36. Algoritmul în pseudocod de mai jos citește un număr natural n > 1 și calculează și afișează suma numerelor
de la 1 la n. Exemplu: n = 5 => suma = 1 + 2 + 3 + 4 + 5 = 15. Ce trebuie scris în locul punctelor de
suspensie astfel încât algoritmul să funcționeze corect ?
natural n, i, suma
citeşte n
suma <- 0
pentru i de la 1 la n cu pas 1 execută
.................
sfârşit pentru
scrie suma
37. Algoritmul în pseudocod de mai jos citește un număr natural n și calculează și afișează suma cifrelor sale.
Exemplu: n = 387 => suma = 18. Ce trebuie scris în locul punctelor de suspensie astfel încât algoritmul să
funcționeze corect ?
natural n, c, suma
3
citeşte n
suma <- 0
cât timp n > 0 execută
c <- n % 10
suma <- suma + c
......
sfârşit cât timp
scrie suma
R. n <- n / 10
38. Algoritmul în pseudocod de mai jos citește un număr natural n > 1 și calculează și afișează suma numerelor
de la 1 la n. Exemplu: n = 5 => suma = 1 + 2 + 3 + 4 + 5 = 15. Ce trebuie scris în locul punctelor de
suspensie astfel încât algoritmul să funcționeze corect ?
natural n, i, suma
citeşte n
.......
pentru i de la 1 la n cu pas 1 execută
suma <- suma + i
sfârşit pentru
scrie suma
R. suma <- 0
39. Algoritmul în pseudocod de mai jos citește un număr natural n și calculează și afișează suma cifrelor sale.
Exemplu: n = 387 => suma = 18. Ce trebuie scris în locul punctelor de suspensie astfel încât algoritmul să
funcționeze corect ?
natural n, c, suma
citeşte n
suma <- 0
cât timp n > 0 execută
c <- n % 10
.......
n <- n / 10
sfârşit cât timp
scrie suma
40. Algoritmul în pseudocod de mai jos citește un număr natural n > 1 și calculează și afișează suma numerelor
de la 1 la n. Exemplu: n = 5 => suma = 1 + 2 + 3 + 4 + 5 = 15. Ce trebuie scris în locul punctelor de
suspensie astfel încât algoritmul să funcționeze corect ?
natural n, i, suma
citeşte n
suma <- 0
pentru i de la ..... cu pas 1 execută
suma <- suma + i
sfârşit pentru
scrie suma
R. 1 la n
41. Algoritmul în pseudocod de mai jos citește un număr natural n și calculează și afișează suma cifrelor sale.
Exemplu: n = 387 => suma = 18. Ce trebuie scris în locul punctelor de suspensie astfel încât algoritmul să
funcționeze corect ?
natural n, c, suma
citeşte n
......
cât timp n > 0 execută
c <- n % 10
suma <- suma + c
4
n <- n / 10
sfârşit cât timp
scrie suma
R. suma <- 0
42. Algoritmul în pseudocod de mai jos citește un număr natural n și calculează și afișează suma cifrelor sale.
Exemplu: n = 387 => suma = 18. Ce trebuie scris în locul punctelor de suspensie astfel încât algoritmul să
funcționeze corect ?
natural n, c, suma
citeşte n
suma <- 0
execută
....
suma <- suma + c
n <- n / 10
cât timp n > 0
scrie suma
R. c <- n % 10
R. interschimbarea valorilor a și b
R. maximum dintre a și b
R. suma 1+2+3+...+n
R. 9, 5
R. 5, 5
R. 9, 9
47. Care sunt valorile care se citesc pentru a și b astfel încât algoritmul de mai jos să afișeze 1 și 2?
întreg a, b, x
citește a, b
x <- a
a <- b
b <- x
scrie a, b
R. a = 2, b = 1
48. Care sunt valorile care se citesc pentru a și b astfel încât algoritmul de mai jos să afișeze 2 și 2?
întreg a, b
citește a, b
b <- a
a <- b
scrie a, b
R. a = 2, b = orice valoare
49. Care sunt valorile care se citesc pentru a și b astfel încât algoritmul de mai jos să afișeze 2 și 2?
întreg a, b
citește a, b
6
a <- b
b <- a
scrie a, b
R. a = orice valoare, b = 2
R. 10
51. Care este valoarea care se citește pentru n astfel încât algoritmul de mai jos să afișeze 15 ?
natural n, i, x
citește n
x <- 0
pentru i de la 1 la n cu pas 1 execută
x <- x + i
sfârșit pentru
scrie x
R. 5
R. 7
53. Care este valoarea de trei cifre care se citește pentru n astfel încât algoritmul de mai jos să afișeze 1 ?
natural n, c, x
citește n
x <- 0
cât timp n > 0 execută
c <- n % 10
x <- x + c
n <- n / 10
sfârșit cât timp
scrie x
R. 100
7
ÎNTREBĂRI CURS 2: Sisteme de numerație, Reprezentarea internă a datelor,
Etape în crearea unui program C, Ieşire cu format – printf
2. Alegeţi varianta greşită. În specificatorul de format al instrucţiunii printf, precizia - care este separată
printr-un punct de dimensiunea minimă a câmpului de afişare – specifică …..
a. numărul maxim de caractere ce vor fi tipărite dintr-un şir
b. numărul de cifre de după punctul zecimal al unei valori în reprezentare virgulă mobilă
c. numărul minim de caractere ce vor fi tipărite dintr-un şir
d. numărul minim de cifre in cazul unui întreg
10. Să se convertească numărul 0,123 din baza 10 în baza 16. Precizia de reprezentare este 5.
a. 0,EC7F1 b. 0,FED00 c. 0,1F7CE d. 0,00321
8
17. Cât este complementul faţă de doi al numărului -105 pe 8 biţi?
a. 00010101 b. 10010111 c. 11101001 d. 01101001
18. Pentru a reprezenta pe 8 biţi un număr în complement faţă de doi, nu putem depăşi limita inferioară …..
a. -128 b. -256 c. -127 d. -255
19. Care este limita inferioară pentru a reprezenta un număr în complement faţă de doi pe 16 biţi?
a. -32.768 b. -65.536 c. -65.535 d. –32.767
20. Care este limita inferioară pentru a reprezenta un număr în complement faţă de doi pe 32 de biţi?
a. –2.147.483.647 b. – 4.294.967.296 c. – 4.294.967.295 d. –2.147.483.648
22. La crearea unui program C după editarea programului sursă urmează etapa de …..
a. testare şi depanare b. compilare c. editare a legăturilor d. execuţie a programului
R: exponent
R: caracteristică ..................
#include <stdio.h>
main()
{
int i;
i = 152;
printf("intregul i = %d\n", i);
}
R:
9
29. Precizați ce afișează programul de mai jos?
#include <stdio.h>
main()
{
float r;
r = 3.712;
printf("realul r = %f\n", r);
}
R:
#include <stdio.h>
main()
{
char c;
c = 'A';
printf("caracterul c = %c\n", c);
}
R:
#include <stdio.h>
main()
{
double rd;
rd = 5.45E5;
printf("real dublu rd = %e\n", rd);
}
R:
#include <stdio.h>
main()
{
int i;
i = 152;
printf("intregul i = %i\n", i);
}
R:
#include <stdio.h>
main()
{
int i;
i = 152;
printf("intregul i = %i/n", i);
10
}
R: intregul i = 152/n
#include <stdio.h>
main()
{
char c;
c = 65;
printf("caracterul c = %c\n", c);
}
R:
#include <stdio.h>
main()
{
char c;
c = 97;
printf("caracterul c = %c\n", c);
}
R: caracterul c = a
#include <stdio.h>
main()
{
char c;
c = 48;
printf("caracterul c = %c\n", c);
}
R: caracterul c = 0
#include <stdio.h>
main()
{
float r;
r = 3;
printf("realul r = %f\n", r);
}
R: realul r = 3.000000
#include <stdio.h>
main()
{
double rd;
rd = 5.4555E5;
printf(" 12345678901\n");
printf("real dublu rd = %9.2e\n", rd);
}
11
R:
#include <stdio.h>
main()
{
int i;
i = 152;
printf(" 12345678901\n");
printf("intregul i = %6d\n", i);
}
R:
#include <stdio.h>
main()
{
float r;
r = 3.712;
printf(" 12345678901\n");
printf("realul r = %11.2f\n", r);
}
R:
#include <stdio.h>
main()
{
char c;
c = 'A';
printf(" 12345678901\n");
printf("caracterul c = %4c\n", c);
}
R:
#include <stdio.h>
main()
{
printf(":%s:\n","123456789012345");
printf(":%s:\n","salut, lume");
printf(":%s:\n","123456789012345");
}
R:
#include <stdio.h>
main()
12
{
printf(":%s:\n","123456789012345");
printf(":%10s:\n","salut, lume");
printf(":%s:\n","123456789012345");
}
R:
#include <stdio.h>
main()
{
printf(":%s:\n","123456789012345");
printf(":%.10s:\n","salut, lume");
printf(":%s:\n","123456789012345");
}
R:
#include <stdio.h>
main()
{
printf(":%s:\n","123456789012345");
printf(":%-10s:\n","salut, lume");
printf(":%s:\n","123456789012345");
}
R:
#include <stdio.h>
main()
{
printf(":%s:\n","123456789012345");
printf(":%.15s:\n","salut, lume");
printf(":%s:\n","123456789012345");
}
R:
#include <stdio.h>
main()
{
13
printf(":%s:\n","123456789012345");
printf(":%-15s:\n","salut, lume");
printf(":%s:\n","123456789012345");
}
R:
#include <stdio.h>
main()
{
printf(":%s:\n","123456789012345");
printf(":%15.10s:\n","salut, lume");
printf(":%s:\n","123456789012345");
}
R:
#include <stdio.h>
main()
{
printf("%.*s", 5, "sir de caractere");
}
R: sir d
#include <stdio.h>
main()
{
printf("%.*s", 3, "***************");
}
R: ***
51. Precizați care dintre cele două variante afișează corect șirul de caractere citest%e?
a. b.
#include <stdio.h> #include <stdio.h>
main() main()
{ {
printf("citest%e"); printf("%s","citest%e");
} }
R: b.
14
ÎNTREBĂRI CURS 3: Date și instrucțiuni. Intrare cu format – scanf. Aplicații
2. Fie declaraţiile int zi, an; char numeluna[20];. Dorim să citim ziua, luna şi anul unei date
calendaristice (de exemplu: 25 dec 2015). Alegeţi instrucţiunea scanf corespunzătoare:
a. scanf("%d %s %d", &zi, &numeluna, &an);
b. scanf("%d %s %d", zi, numeluna, an);
c. scanf("%d %s %d", &zi, numeluna, &an);
d. scanf("%d %s %d", zi, &numeluna, an);
3. Singurul caz în care nu este obligatorie folosirea operatorul adresă pentru citirea valorii unei variabile cu
funcția scanf() este citirea unui ……..
R. şir de caractere
4. Înlocuiți punctele de suspensie cu specificatorul de conversie corespunzător pentru a citi variabila t de tip
char.
#include <stdio.h>
main()
{
char t;
printf("Introduceti un caracter = "); scanf("%....", &t);
}
R. c
5. Înlocuiți punctele de suspensie cu specificatorul de conversie corespunzător pentru a citi variabila t de tip
int.
#include <stdio.h>
main()
{
int t;
printf("Introduceti un nr intreg = "); scanf("%...", &t);
}
6. Înlocuiți punctele de suspensie cu specificatorul de conversie corespunzător pentru a citi variabila r de tip
float.
#include <stdio.h>
main()
{
float r;
printf("Introduceti un nr real = "); scanf("%....", &r);
}
R. f (sau e, g)
15
7. Înlocuiți punctele de suspensie cu specificatorul de conversie corespunzător pentru a citi variabila d de tip
double.
#include <stdio.h>
main()
{
double d;
printf("Introduceti un nr real dublu = "); scanf("%....", &d);
}
#include <stdio.h>
main()
{
float r = 2.3131318;
printf("Dati un numar real = "); scanf("%%", &r);
printf("%f", r);
}
R. 2.313132
#include <stdio.h>
main()
{
int t;
printf("Introduceti un numar = "); scanf("%i", &t);
printf("%d", t);
}
R. 10
#include <stdio.h>
main()
{
int t;
printf("Introduceti un numar = "); scanf("%i", &t);
printf("%d", t);
}
R. 9
#include <stdio.h>
main()
{
int t;
scanf("%o", &t);
printf("%d", t);
}
R. 9
16
12. Ce afișează programul următor dacă se introduce 11<Enter>?
#include <stdio.h>
main()
{
int t;
scanf("%o", &t);
printf("%d", t);
}
R. 9
#include <stdio.h>
main()
{
int t;
scanf("%x", &t);
printf("%d", t);
}
R. 10
#include <stdio.h>
main()
{
int t;
scanf("%x", &t);
printf("%d", t);
}
R. 10
#include <stdio.h>
main()
{
char sir[10];
printf("Dati un sir de caractere = ");
scanf("%s", sir);
printf("Sirul de caractere citit a fost = %s\n", sir);
}
R. sir1
#include <stdio.h>
main()
{
double suma, v;
suma = 0;
while (scanf("%lf", &v) == 1){
suma = suma + v;
printf("\t%.2f\n", suma);
17
}
}
R. 1.26
17. Completați punctele de suspensie cu caracterele corespunzătoare astfel încât programul următor să citească
și să afișeze o dată calendaristică în forma 25 dec 2016.
#include <stdio.h>
main()
{
int zi, an;
char luna[20];
printf("dati data calendaristica in forma 25 dec 2016 = ");
scanf("%d %s %d", &zi, ....... );
printf("zi = %d\nluna = %s\nan = %d\n", zi, luna, an);
}
R. luna, &an
18. Programul următor citește o dată calendaristică în forma zz/ll/aaaa (e.g. 25/12/2016) și afișează separat
ziua, luna și anul. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să
funcționeze corect.
#include <stdio.h>
main()
{
int zi, luna, an;
printf("dati data calendaristica in forma 25/12/2016 = ");
scanf("......", &zi, &luna, &an);
printf("zi = %d\nluna = %d\nan = %d\n", zi, luna, an);
}
R. %d/%d/%d
19. Programul următor citește un număr real (cu punct ca separator) și extrage partea întreagă și partea
fracționară a numărului real în două numere întregi pe care le afișează. Completați punctele de suspensie cu
caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int pi, pf;
printf("Introduceti un numar real cu parte intreaga si parte fractionara = ");
scanf(".......",&pi,&pf);
printf("partea intreaga = %d\t partea fractionara = %d\n", pi, pf);
}
R. %d.%d
20. Precizați care dintre cele două variante citește corect un număr real x ?
a. b.
#include <stdio.h> #include <stdio.h>
main() main()
{ {
float x; float x;
printf("x = "); scanf("%e", &x); printf("x = "); scanf("%f", x);
} }
R: a.
18
21. Precizați câte dintre cele trei variante citește corect un număr real x ?
a. b. c.
#include <stdio.h> #include <stdio.h> #include <stdio.h>
main() main() main()
{ { {
float x; float x; float x;
printf("x = "); printf("x = "); printf("x = ");
scanf("%e", &x); scanf("%f", &x); scanf("%g", &x);
} } }
R. toate 3
22. Rescrieți programul de mai jos, care afișează tabela cu temperaturile de la 0 la 300 pe scara Fahrenheit și
corespondentele lor pe scara Celsius, folosind o singură instrucțiune for și o singură variabilă de tip int.
#include <stdio.h>
main()
{
float fahr, celsius;
float lower, upper, step;
lower = 0;
upper = 300;
step = 20;
fahr = lower;
R. #include <stdio.h>
main()
{
int fahr;
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
}
23. Rescrieți programul de mai jos, care afișează tabela cu temperaturile de la 0 la 300 pe scara Fahrenheit și
corespondentele lor pe scara Celsius, folosind în locul constatelor literale 0, 300 și 20 constante simbolice.
#include <stdio.h>
main()
{
int fahr;
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
}
R. #include <stdio.h>
#define LOWER 0
#define UPPER 300
#define STEP 20
main()
{
int fahr;
for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
}
19
24. Scrieți un program în limbajul C care copiază intrarea sa la ieșirea sa caracter cu caracter, folosind
algoritmul următor:
citește un caracter
cât timp (caracterul nu este indicatorul de sfârșit de fișier)
scrie caracterul tocmai citit
citește un caracter
sfârșit cât timp
R. #include <stdio.h>
main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
R. Copiază intrarea sa la ieșirea sa caracter cu caracter până la întâlnirea caracterului de sfârșit de fișier (^Z).
26. Programul următor numără caracterele introduse de utilizator pe intrare până la întâlnirea caracterului de
sfârșit de fișier (^Z). De exemplu, dacă se introduc caracterele ab urmate de <Enter> și apoi ^Z se afișează 3.
Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (...... != EOF )
++nc;
printf("%ld\n", nc);
}
R. getchar()
27. Programul următor numără caracterele introduse de utilizator pe intrare până la întâlnirea caracterului de
sfârșit de fișier (^Z). De exemplu, dacă se introduc caracterele ab urmate de <Enter> și apoi ^Z se afișează 3.
Scrieți un program echivalent care să folosească în locul ciclului while un ciclu for.
#include <stdio.h>
main()
{
long nc;
nc = 0;
while ( getchar() != EOF )
++nc;
printf("%ld\n", nc);
}
R. #include <stdio.h>
main()
20
{
double nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf("%.0f\n", nc);
}
28. Programul următor numără liniile de text introduse de utilizator pe intrare până la întâlnirea caracterului de
sfârșit de fișier (^Z). O linie de text se termină cu caracterul newline (’\n’). De exemplu, dacă se introduc
caracterele 123 urmate de <Enter>, abc urmate de <Enter>, 456 urmate de <Enter> și apoi ^Z se afișează 3.
Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int c, nl;
nl = 0;
while (..... != EOF)
if (c == '\n')
++nl;
printf("%d\n", nl);
}
R. (c = getchar())
R. 10
R. 1
33. Programul următor numără liniile (în variabila nl), cuvintele (în variabila nw) şi caracterele (în variabila nc)
introduse. Prin cuvânt înțelegem o secvență de caractere care nu conține blank-uri (' '), tab-uri ('\t') sau
caractere newline ('\n'). Pentru exemplul de rulaj prezentat în imaginea alăturată, 3 reprezintă numărul de
21
linii de text, 11 numărul de cuvinte, iar 53 numărul de caractere citite pe intrare. Completați punctele de
suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\t' || c == '\n')
state = OUT;
else if ( ... ) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
R. state == OUT
34. Programul următor numără liniile (în variabila nl), cuvintele (în variabila nw) şi caracterele (în variabila nc)
introduse. Prin cuvânt înțelegem o secvență de caractere care nu conține blank-uri (' '), tab-uri ('\t') sau
caractere newline ('\n'). Pentru exemplul de rulaj prezentat în imaginea alăturată, 3 reprezintă numărul de
linii de text, 11 numărul de cuvinte, iar 53 numărul de caractere citite pe intrare. Completați punctele de
suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\t' || c == '\n')
......;
else if ( state == OUT ) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
R. state = OUT
35. Programul următor numără liniile (în variabila nl), cuvintele (în variabila nw) şi caracterele (în variabila nc)
introduse. Prin cuvânt înțelegem o secvență de caractere care nu conține blank-uri (' '), tab-uri ('\t') sau
caractere newline ('\n'). Pentru exemplul de rulaj prezentat în imaginea alăturată, 3 reprezintă numărul de
linii de text, 11 numărul de cuvinte, iar 53 numărul de caractere citite pe intrare. Completați punctele de
suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
#define IN 1
22
#define OUT 0
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\t' || c == '\n')
state = OUT;
else if ( state == OUT ) {
.......;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
R. state = IN
36. Programul următor afișează cele șapte componente numere reale ale unui vector v[7] în forma:
v[0] = 4.2; v[1] = 0; v[2] = -2.2; v[3] = 0.5; v[4] = 12; v[5] = 0.33; v[6] = 3.4;
#include <stdio.h>
main()
{
float v[7] = {4.2, 0, -2.2, 0.50, 12.0, 0.33, 3.40};
int i, n = 7;
for (i = 0; i < n; i++)
printf("v[%d] = %g; ", i, v[i]);
}
Scrieți cum se modifică instrucțiunea printf astfel încât numerele reale să fie afișate fiecare cu câte două
zecimale în forma: v[0] = 4.20; v[1] = 0.00; v[2] = -2.20; v[3] = 0.50; v[4] = 12.00; v[5]
= 0.33; v[6] = 3.40;
37. Programul următor numără apariția fiecărei cifre (0, 1, 2, … , 9) a caracterelor spații albe (blank, tab, LF) şi
a tuturor celorlalte caractere. Folosim vectorul de numere întregi ndigit[10] pentru a memora numărul de
apariții ale fiecărei cifre (în ndigit[0] de câte ori apare cifra 0, ..., în ndigit[9] de câte ori apare cifra 9) și
două variabile simple (nwhite, nother) care să memoreze numărul de apariții a caracterelor albe, respectiv
numărul de apariții a celorlalte caractere. Completați punctele de suspensie cu caracterele corespunzătoare
pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\t' || c == '\n')
++nwhite;
else
.......;
printf(" digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
23
printf("\n white space = %d \n other = %d\n",nwhite, nother);
}
R. ++nother
38. Programul următor numără apariția fiecărei cifre (0, 1, 2, … , 9) a caracterelor spații albe (blank, tab, LF) și
a tuturor celorlalte caractere. Folosim vectorul de numere întregi ndigit[10] pentru a memora numărul de
apariții ale fiecărei cifre (în ndigit[0] de câte ori apare cifra 0, ..., în ndigit[9] de câte ori apare cifra 9) și
două variabile simple (nwhite, nother) care să memoreze numărul de apariții a caracterelor albe, respectiv
numărul de apariții a celorlalte caractere. Completați punctele de suspensie cu caracterele corespunzătoare
pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = ..... ) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\t' || c == '\n')
++nwhite;
else
++nother;
printf(" digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
printf("\n white space = %d \n other = %d\n",nwhite, nother);
}
R. getchar()
39. Completați punctele de suspensie din programul următor astfel încât programul să citească un număr n
natural nenul și să afișeze cifrele sale începând cu cifra cea mai puțin semnificativă (cifra unităților). Exemplu:
n = 9301 => 1 0 3 9
#include <stdio.h>
main()
{
int n, c;
printf("numarul este = "); scanf("%d", &n);
while (n > 0) {
c = n % 10;
.........;
n = n / 10;
}
}
R. printf("cifra = %d\n", c)
40. Completați punctele de suspensie din programul următor astfel încât programul să citească un număr n
natural nenul și să afișeze cifrele sale începând cu cifra cea mai puțin semnificativă (cifra unităților). Exemplu:
n = 9301 => 1 0 3 9
#include <stdio.h>
main()
{
int n, c;
printf("numarul este = "); scanf("%d", &n);
24
while (n > 0) {
c = n % 10;
printf("cifra = %d\n", c);
.........;
}
}
R. n = n / 10
41. Completați punctele de suspensie din programul următor astfel încât programul să citească un număr n
natural nenul și să afișeze cifrele sale pare începând cu cifra cea mai puțin semnificativă. Exemplu: n = 2518
=> 8 2
#include <stdio.h>
main()
{
int n, c;
printf("numarul este = "); scanf("%d", &n);
while (n > 0) {
c = n % 10;
.......
printf("cifra = %d\n", c);
n = n / 10;
}
}
R. if (c%2 == 0)
42. Completați punctele de suspensie din programul următor astfel încât programul să citească un număr n
natural nenul și să afișeze cifrele sale pare începând cu cifra cea mai puțin semnificativă. Exemplu: n = 2518
=> 8 2
#include <stdio.h>
main()
{
int n, c;
printf("numarul este = ");
.......
while (n > 0) {
c = n % 10;
if (c%2 == 0)
printf("cifra = %d\n", c);
n = n / 10;
}
}
R. scanf("%d", &n);
43. Completați punctele de suspensie din programul următor astfel încât programul să citească un număr n
natural nenul și să afișeze cifrele sale impare începând cu cifra cea mai puțin semnificativă. Exemplu: n = 2518
=> 1 5
#include <stdio.h>
main()
{
int n, c;
printf("numarul este = ");
scanf("%d", &n);
while (n > 0) {
c = n % 10;
if (c%2 != 0)
printf("cifra = %d\n", c);
........;
}
}
25
R. n = n / 10
44. Completați punctele de suspensie din programul următor astfel încât programul să citească un număr n
natural nenul și să afișeze cifrele sale impare începând cu cifra cea mai puțin semnificativă. Exemplu: n = 2518
=> 1 5
#include <stdio.h>
main()
{
int n, c;
printf("numarul este = ");
scanf("%d", &n);
while (n > 0) {
.......;
if (c%2 != 0)
printf("cifra = %d\n", c);
n = n / 10;
}
}
R. c = n % 10
45. Programul următor citește un număr n natural și afișează suma cifrelor sale. Exemplu: n = 9201 => s = 12
(1+0+2+9). Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să
funcționeze corect.
#include <stdio.h>
main()
{
int n, s, c;
printf("numarul este = "); scanf("%d", &n);
s = 0;
while (n > 0) {
c = n % 10;
s = s + c;
......;
}
printf(" suma cifrelor = %d\n", s);
}
R. n = n / 10
46. Programul următor citește un număr n natural și afișează suma cifrelor sale. Exemplu: n = 9201 => s = 12
(1+0+2+9). Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să
funcționeze corect.
#include <stdio.h>
main()
{
int n, s, c;
printf("numarul este = "); scanf("%d", &n);
s = 0;
while (n > 0) {
......;
s = s + c;
n = n / 10;
}
printf(" suma cifrelor = %d\n", s);
}
R. c = n % 10
26
47. Programul următor citește un număr n natural și afișează produsul cifrelor sale. Exemplu: n = 5231 => p =
30 (5*2*3*1). Programul conține o greșeală. Scrieți greșeala și cum este corect pentru ca programul să
funcționeze corespunzător.
#include <stdio.h>
main()
{
int n, p, c;
printf("numarul este = "); scanf("%d", &n);
p = 0;
while (n > 0) {
c = n % 10;
p = p * c;
n = n / 10;
}
printf(" produsul cifrelor = %d\n", p);
}
48. Programul următor citește un număr n natural și afișează suma cifrelor sale. Exemplu: n = 9201 => s = 12
(1+0+2+9). Programul conține o greșeală. Scrieți greșeala și cum este corect pentru ca programul să
funcționeze corespunzător.
#include <stdio.h>
main()
{
int n, s, c;
printf("numarul este = "); scanf("%d", &n);
s = 0;
while (n < 0) {
c = n % 10;
s = s + c;
n = n / 10;
}
printf(" suma cifrelor = %d\n", s);
}
49. Programul următor citește un număr n natural nenul și afișează cifrele sale impare începând cu cifra cea mai
puțin semnificativă. Exemplu: n = 2518 => 1 5. Programul conține o greșeală. Scrieți greșeala și cum este
corect pentru ca programul să funcționeze corespunzător.
#include <stdio.h>
main()
{
int n, c;
printf("numarul este = ");
scanf("%d", &n);
while (n > 0) {
c = n % 10;
if (c%2 != 0)
printf("cifra = %c\n", c);
n = n / 10;
}
}
R. printf("cifra = %c\n", c); este greșeala, corect este: printf("cifra = %d\n", c);
50. Programul următor citește un număr n natural nenul și afișează cifrele sale începând cu cifra cea mai puțin
semnificativă (cifra unităților). Exemplu: n = 9301 => 1 0 3 9. Programul conține o greșeală. Scrieți greșeala și
cum este corect pentru ca programul să funcționeze corespunzător.
27
#include <stdio.h>
main()
{
int n, c;
printf("numarul este = "); scanf("%d", &n);
while (n > 0) {
n = c % 10;
printf("cifra = %d\n", c);
n = n / 10;
}
}
51. Programul următor citește un număr n natural și afișează cifra maximă a lui n. Exemplu: n = 3901 => max
= 9. 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, max, c, temp;
printf("numarul este = "); scanf("%d", &n);
temp = n;
max = 0;
while ( temp != 0 ) {
c = temp % 10;
if ( max < c )
c = max;
temp = temp / 10;
}
printf("cifra maxima din %d este = %d\n", n, max);
}
52. Programul următor citește un număr n natural și afișează cifra maximă a lui n. Exemplu: n = 3901 => max
= 9. 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, max, c, temp;
printf("numarul este = "); scanf("%d", &n);
temp = n;
max = 0;
while ( temp != 0 ) {
c = temp % 10;
if ( c < max )
max = c;
temp = temp / 10;
}
printf("cifra maxima din %d este = %d\n", n, max);
}
53. Programul următor citește un număr n natural și afișează cifra maximă a lui n. Exemplu: n = 3901 => max
= 9. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze
corect.
#include <stdio.h>
main()
{
28
int n, max, c, temp;
printf("numarul este = "); scanf("%d", &n);
temp = n;
max = 0;
while ( temp != 0 ) {
c = temp % 10;
if ( max < c )
max = c;
..........;
}
printf("cifra maxima din %d este = %d\n", n, max);
}
R. temp = temp / 10
54. Programul următor citește un număr n natural și afișează cifra minimă a lui n. Exemplu: n = 3937 => min =
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, min, c, temp;
printf("numarul este = "); scanf("%d", &n);
temp = n;
min = 0;
while ( temp != 0 ) {
c = temp % 10;
if ( c < min )
min = c;
temp = temp / 10;
}
printf("cifra minima din %d este = %d\n", n, min);
}
55. Programul următor citește un număr n natural și afișează cifra minimă a lui n. Exemplu: n = 3937 => min =
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, min, c, temp;
printf("numarul este = "); scanf("%d", &n);
temp = n;
min = 9;
while ( temp != 0 ) {
c = temp % 10;
if ( c > min )
min = c;
temp = temp / 10;
}
printf("cifra minima din %d este = %d\n", n, min);
}
56. Programul următor citește un număr n natural și afișează cifra maximă a lui n. Exemplu: n = 3901 => max
= 9. 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()
29
{
int n, max, c, temp;
printf("numarul este = "); scanf("%d", &n);
temp = n;
max = 9;
while ( temp != 0 ) {
c = temp % 10;
if ( max < c )
max = c;
temp = temp / 10;
}
printf("cifra maxima din %d este = %d\n", n, max);
}
57. Programul următor citește un număr natural n de minim două cifre și determină cel mai mare număr format
din cifra minimă și cea maximă a acestuia. Exemplu: n = 2725 => maxim = 72 (cifra maximă = 7, cifra
minimă = 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, cif_max = 0, cif_min = 0, c, max;
printf("n = "); scanf("%d",&n);
while( n != 0 ){
c = n % 10;
if(c > cif_max)
cif_max = c;
if(c < cif_min)
cif_min = c;
n = n /10;
}
max = cif_max * 10 + cif_min;
printf("maxim = %d \n", max);
}
58. Programul următor citește un număr natural n de minim două cifre și determină cel mai mare număr format
din cifra minimă și cea maximă a acestuia. Exemplu: n = 2725 => maxim = 72 (cifra maximă = 7, cifra
minimă = 2). Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să
funcționeze corect.
#include <stdio.h>
main() {
int n, cif_max = 0, cif_min = 9, c, max;
printf("n = "); scanf("%d",&n);
while( n != 0 ){
c = n % 10;
if(c > cif_max)
cif_max = c;
if(c < cif_min)
cif_min = c;
n = n /10;
}
..................;
printf("maxim = %d \n", max);
}
30
59. Programul următor citește pe intrare cele n (n 0, natural) cifre ale unui număr de la cifra cea mai
semnificativă până la cifra cea mai puțin semnificativă, apoi formează numărul din cifrele sale și îl afișează.
Exemplu: numarul de cifre = 5, cifra = 2, cifra = 3, cifra = 1, cifra = 9, cifra = 7 => numarul = 23179.
Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int c, n, x, i;
x = 0;
printf("Cate cifre are numarul? = "); scanf("%d", &n);
for ( i = 1; i <= n; ++i ){
printf("cifra %d este = ", i); scanf("%d", &c);
.............;
}
printf("numarul format din cifrele sale este = %d\n", x);
}
R. x = x * 10 + c
60. Programul următor citește pe intrare cele n (n 0, natural) cifre ale unui număr de la cifra cea mai
semnificativă până la cifra cea mai puțin semnificativă, apoi formează numărul din cifrele sale și îl afișează.
Exemplu: numarul de cifre = 5, cifra = 2, cifra = 3, cifra = 1, cifra = 9, cifra = 7 => numarul = 23179.
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 c, n, x, i;
x = 0;
printf("Cate cifre are numarul? = "); scanf("%d", &n);
for ( i = 1; i <= n; ++i ){
printf("cifra %d este = ", i); scanf("%d", &c);
x = x + c * 10;
}
printf("numarul format din cifrele sale este = %d\n", x);
}
61. Programul următor citește pe intrare cele n (n 0, natural) cifre ale unui număr de la cifra cea mai
semnificativă până la cifra cea mai puțin semnificativă, apoi formează numărul din cifrele sale și îl afișează.
Exemplu: numarul de cifre = 5, cifra = 2, cifra = 3, cifra = 1, cifra = 9, cifra = 7 => numarul = 23179. Scrieți
o implementare echivalentă pentru ciclul for() din program folosind un ciclu while().
#include <stdio.h>
main()
{
int c, n, x, i;
x = 0;
printf("Cate cifre are numarul? = "); scanf("%d", &n);
for ( i = 1; i <= n; ++i ){
printf("cifra %d este = ", i); scanf("%d", &c);
x = x * 10 + c;
}
R. i = 1;
31
while( i <= n ){
printf("cifra %d este = ", i); scanf("%d", &c);
x = x * 10 + c;
++i;
}
62. Programul următor citește pe intrare cele n (n 0, natural) cifre ale unui număr de la cifra cea mai
semnificativă până la cifra cea mai puțin semnificativă, apoi formează numărul din cifrele sale și îl afișează.
Exemplu: numarul de cifre = 5, cifra = 2, cifra = 3, cifra = 1, cifra = 9, cifra = 7 => numarul = 23179. Scrieți
o implementare echivalentă pentru ciclul while() din program folosind un ciclu for().
#include <stdio.h>
main()
{
int c, n, x;
x = 0;
printf("Cate cifre are numarul? = "); scanf("%d", &n);
while ( n-- ){
printf("cifra = "); scanf("%d", &c);
x = x * 10 + c;
}
printf("numarul format din cifrele sale este = %d\n", x);
}
R. for ( ; n--; ){
printf("cifra = "); scanf("%d", &c);
x = x * 10 + c;
}
63. Programul următor citește un număr întreg n și afișează numărul inversat (oglindit). Exemplu: n = 174 =>
471. 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, invers, temp;
printf("numarul de inversat = "); scanf("%d", &n);
temp = n;
invers = 0;
while ( temp != 0 ){
invers = invers * 10 + temp;
temp = temp / 10;
}
printf("inversul lui %d este = %d\n", n, invers);
}
R. invers = invers * 10 + temp; este greșeala, corect este: invers = invers * 10 + temp % 10;
64. Programul următor citește un număr întreg n și afișează numărul inversat (oglindit). Exemplu: n = 174 =>
471. Completați punctele de suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze
corect.
#include <stdio.h>
main()
{
int n, invers, temp;
printf("numarul de inversat = "); scanf("%d", &n);
temp = n;
invers = 0;
while ( temp != 0 ){
......................;
32
temp = temp / 10;
}
printf("inversul lui %d este = %d\n", n, invers);
}
65. Programul următor citește un număr întreg n și verifică dacă numărul este palindrom (i.e. este egal cu
inversul său). Exemple: n = 174 => nu este palindrom; n = 17471 => palindrom. Completați punctele de
suspensie cu caracterele corespunzătoare pentru ca programul să funcționeze corect.
#include <stdio.h>
main()
{
int n, invers = 0, temp;
printf("Introduceti nr ce trebuie verificat ca e sau nu palindrom\n");
scanf("%d",&n);
..............;
while ( temp != 0 ) {
invers = invers * 10 + temp%10;
temp = temp / 10;
}
if ( n == invers )
printf("%d este palindrom\n", n);
else
printf("%d nu este palindrom\n", n);
}
R. temp = n
66. Programul următor citește un număr întreg n și verifică dacă numărul este palindrom (i.e. este egal cu
inversul său). Exemple: n = 174 => nu este palindrom; n = 17471 => palindrom. 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, invers = 0, temp;
printf("Introduceti nr ce trebuie verificat ca e sau nu palindrom\n");
scanf("%d",&n);
temp = n;
while ( temp != 0 ) {
invers = invers * 10 + temp%10;
temp = temp % 10;
}
if ( n == invers )
printf("%d este palindrom\n", n);
else
printf("%d nu este palindrom\n", n);
}
67. Programul următor citește un număr întreg n și verifică dacă numărul este palindrom (i.e. este egal cu
inversul său). Exemple: n = 174 => nu este palindrom; n = 17471 => palindrom. 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()
{
33
int n, invers = 0, temp;
printf("Introduceti nr ce trebuie verificat ca e sau nu palindrom\n");
scanf("%d",&n);
temp = n;
while ( temp != 0 ) {
invers = invers * 10 + temp%10;
temp = temp / 10;
}
if ( n = invers )
printf("%d este palindrom\n", n);
else
printf("%d nu este palindrom\n", n);
}
R. 725
R. 1.1
R. 1 0 3 9
R. 321
R. 8 2
R. orice număr natural care conține doar cifre impare și o singură cifră 8
R. 1 5
R. orice număr natural care conține doar cifre pare și o singură cifră 1
R. 9
R. 3
R. 72
37
82. Ce afișează programul următor dacă se citește de la tastatura 5 2 3 1 7 9 ?
#include <stdio.h>
main()
{
int t, n, x, i;
x = 0;
scanf("%d", &n);
for ( i = 1; i <= n; ++i ){
scanf("%d", &t);
x = x * 10 + t;
}
printf("%d", x);
}
R. 23179
R. 1 1
R. 1
R. 11
scanf("%d",&n);
y = n;
while ( y != 0 ) {
x = x * 10 + y%10;
y = y / 10;
}
if ( n == x )
printf("1");
else
printf("0");
}
R. 0
scanf("%d",&n);
y = n;
while ( y != 0 ) {
x = x * 10 + y%10;
y = y / 10;
}
if ( n == x )
printf("1");
else
printf("0");
}
39