Sunteți pe pagina 1din 4

Semestrul I

Laborator Progamare I
săptămâna 8 – 12.10.2018
15 – 19.10.2018

OBIECTIVE:

- utilizarea funcţiilor de citire/scriere


- testarea operatorilor aritmetici, operatorilor de relaţie, operatorilor de atribuire,
operatorilor de incrementare/decrementare, operatorilor de conversie
explicită, de dimensiune
- conversii implicite
- testarea operatorilor logici, condiţionali, paranteză, adresă

Tabela cu ordinea de precedenţă a operatorilor limbajului C (preluată din


B.Kernigham, D. Ritchie, - The C Programming Language, 2nd ed.) este prezentrată
mai jos. Precedenţa scade de la prima linie până la ultima. In aceeasi linie sunt
plasaţi operatorii cu aceeaşi precedenţă.

OPERATORS ASSOCIATIVITY
( ) [ ] --> . left to right
! ~ ++ -- + - * & (type) sizeof right to left
* / % left to right
+ - left to right
<< >> left to right
< <= > >= left to right
== != left to right
& left to right
^ left to right
| left to right
&& left to right
|| left to right
?: right to left
= += -= *= /= %= &= ^= |= <<= right to left
>>=
, left to right

1
1. Să se scrie programul care printr-un singur apel printf să tipărească pe ecran :
Caractere speciale:
slash /; backslash \; procent%;
ghilimele "; apostrof '.

2. Să se scrie un program care afişează constanta 123456789 în zecimal, octal, hexazecimal.

3. Pentru un întreg dat, să se afişeze valoarea lui şi a opusului în zecimal, hexazecimal şi


octal.

4. Să se scrie un program care afişează numere reale cu diferite formate. (se va folosi
#define)

5. Verificaţi ce se întâmplă în urma secvenţelor de program din tabelul de mai jos şi


completaţi acest tabel:

char i =65 int i = 4567 int i = 56789 float i = 123.45


printf(“%c” ,i)
printf(“%d” ,i)
printf(“%u” ,i)
printf(“%ld” ,i)
printf(“%.2f”,i)
printf(“%-o”,i)
printf(“%5.2f”,i)
printf(“%e”,i)

6. Dar în urma secvenţei?


printf("%d \t %o \t %x \t %X \n", 90,90,90,90);

7. Să se afișeze textul "Invat Limbajul C":


a. Intr-o zonă de 20 poziții cadrat la dreapta
b. Intr-o zonă de 20 poziții cadrat la stânga
c. Numai primele 5 caractere din text aliniate la dreapta, pe 10 poziții
d. Numai primele 5 caractere din text aliniate la stânga, pe 10 poziții

8. Scrieţi un program ce efectuează operaţii aritmetice asupra a două date de tip întreg date
ca și constante. Executaţi apoi programul pentru valori care conduc la rezultat în afara
limitelor de reprezentare internă. Ce se întâmplă în acest caz?

9. Scrieţi un program care realizează suma, diferenţa, produsul şi împărţirea a două numere
reale. Afişarea se va face sub forma tabelară:

2
x y x+y x–y x*y x/y

10. Să se scrie un program care citește un întreg de 4 cifre și afișează cifrele respective
precedate, fiecare de câte un spațiu, apoi afișează fiecare cifră a numărului urmată de un
zero.

11. Se citește de la tastatură o dată calendaristică care reprezintă ziua din luna octombrie pe
primele două poziții și anul pe următoarele două poziții (zzaa). Să se afișeze data
respectivă sub forma
20aa Octombrie zz

12. Rulaţi următoarele două secvenţe, observând conversiile implicite şi explicite:

char c='a',cc;
int i=4;
float f=5.95;
printf("%d %f\n",i,f);
i=f; // conversie implicita, trunchiere
printf("%d %f\n",i,f);
f=i+100000; // conversie implicita a rezultatului expresiei
printf("%d %f\n",i,f);
_______________________________________________________________
i=-99.001; // conversie implicita, trunchiere
f='a';
c=0x3239; cc=-i; // preluarea ultimului octet
printf("%d %f %c %c\n",i,f,c,cc);
float r1=5/2,
r2=(float)5/2,
r3=(float)(5/2),
r4=5/(float)2,
r5=(float)5/(float)2;
printf("%f %f %f %f %f\n",r1,r2,r3,r4,r5);

13. Fiind date următoarele definiţii:


int i = 3, j = 5,c1,c2,c3,c4;
determinaţi valorile tuturor variabilelor, după execuţia secvenţei:

c1=(i/2) + 'b' + i-- - - - 'c';


c2=(j%8) * i;
c3=(i++) - (--j);
c4=j = (i += 2);

3
14. Fiind date definiţiile:
int a=2, b=2, c=1, d=0, e=4, i = 2, j = 4;
determinaţi valoarea următoarelor expresii:

a) a++ / ++c * --e


b) --b * c++ -a
c) -b - --c
d) e / --a * b++ /c++
e) e / --a * b++ / c++
f) a %= b = d = 1 + e /2
g) j = (i++ , i -j)

15. Folosind operatorul ternar, să se tipărească maximul și minimul dintre două numere a și b
citite de la tastatură.

16. Folosind operatorul ternar, să se tipărească maximul dintre a,b,c citiţi de la tastatură.

17. Pentru un n citit de la tastatură să se afişeze valorile mai mari/mai mici decât n de 2,4,8,16
ori obţinute prin inmulţiri/impărţiri, respectiv deplasări.

18. Să se scrie un program care citește două numere intregi a și b și afișează pe linii separate:
a, b, !a, !b, a&&b, a||b, !a&&b||!b&&a

19. Se citește un întreg care reprezintă un an calendaristic. Să se scrie un program care


afișează 1 dacă anul este bisect și 0 dacă nu este bisect.

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