Exercitii rezolvate - operatori

```

Rezolvare: a % 100

```
5. a DIV 10 *10+b MOD 10;

```

Rezolvare: a / 10 \*10+b %10.

```
6. a∈(-∞, -2) U (-1,1) U (50, ∞);

```

```
7. a∉ [2,3);

```

Rezolvare: (a<2) || (a>=3).

```
8. (a DIV b MOD c ≤ b) OR NOT(b=a);

```

Rezolvare: (a / b % c <=b) || !(b=a) .

```
9. NOT((a≤b AND a≥c) OR (a≤d));

```

Rezolvare: !((a<=b && a>=c) || (a<=d)).

```
10. a/b≤c/d≤e/f

```

Rezolvare:( a/b<=c/d) && (c/d<=e/f).

```

Rezolvare: 9.

```
12. 9/2*2-5;

```

Rezolvare: 3.

```
12. a=a+2.5, dacă a este o variabilă de tip int, având valoarea 6;

```

Rezolvare: adunarea unei valori reale la o variabilă de tip int se face printr-o conversie implicită. În acest caz, rezultatul va fi 8, obținut prin adunarea la valoarea 6 a conversiei la întreg a valorii 2.5.

```
13. a%=b--, dacă a=29,iar b=7;

```

Rezolvare: expresia este echivalentă cu secvența a=a%b; b=b-1;prin urmare după execuție, variabila a va reține valoarea 1, iar b valoarea 6.

```
14. a!=2*b, dacă variabilele a și b sunt de tip intreg, a memorând valoarea 4, iar b valoarea 2;

```

Rezolvare: 0.

```
15. b=++a?5:7, dacă a=-1;

```

Rezolvare: expresia este echivalentă cu secvența a=a%b; b=b-1;prin urmare după execuție, variabila a va reține valoarea 1, iar b valoarea 6.

```
16. b=(a<<3)+(a>>1), dacă avem declararea int a=2, b;

```

Rezolvare: operatorii de deplasare la nivel de bit determină, practic, deplasarea cu un anumit număr de biți a cifrelor 1din reprezentarea binară. Astfel, cifra 1 din reprezentarea lui 2, 0...010 se va deplasa la stânga, cu trei biți, determinând valoarea 16, respectiv la dreapta cu un bit, determinând valoarea 1. Rezultatul va fi, evident, 17.

```
17. b=a<<(a>>a), dacă a=4;

```

Rezolvare: 4.

```
18. a+=b+1, dacă am avea declararea int a=2, b=2;

```

Rezolvare: În urma execuției, variabila a va reține valoarea 5. Variabila b nu își va schimba valoarea.

```
19. a=b==3+1/3, dacă am avea declararea int a=0, b=3;

```

Rezolvare: evaluarea expresiilor se face de la dreapta la stânga, astfel încât, în prima fază este evaluată expresia b==3+1/3. Rezultatul acestei evaluări este 1, care este atribuit, apoi, variabilei a.

##### Precizează valoarea de adevăr a următoarelor propoziții !

```
20. Ştiind că variabilele a şi b sunt de tip întreg, prin instrucțiunea a=b DIV 10 MOD 10 se atribuie variabilei a cifra zecilor numărului natural cu cel puţin două cifre memorat de variabila b;

```

Rezolvare:adevărat.

```
21. Valoarea expresiei (a / b % c <= b)  | | ! (b == a), dacă variabilele întregi a, b, c au valorile a=20, b=3,c=5, este FALSE;

```

Rezolvare:fals.

```
22. Expresia a=(a/10*10+7)*10+a%10 determină inserarea cifrei 7 în faţa ultimei cifre a unui număr natural, cu mai mult de 2 cifre, memorat în variabila a.

```

Rezolvare:adevărat.

```
23. Expresia a%2+(a+1)%2 are valoarea 1, pentru orice valoare a varibilei întregi a.

```

Rezolvare: adevărat.

```
24. a/2/2==1 dacă și numai dacă a==4.

```

Rezolvare:fals.

##### **C. Alege răspunsul correct !**

25. Știind că n este o variabila întreaga ce memorează un număr natural stabiliți care din expresiile următoare este egală cu zero dacă și numai dacă n este un număr nedivizibil cu 3.

1. *(2-n % 3)% 2;*
2. *(1-n % 3)% 2;*
3. *(1-n % 3 ) \* (2-n % 3);*
4. *(1- n % 3) + (2-n % 3);*

Rezolvare: c.

26. Care este cea mai mică valoare pe care o poate avea expresia n / 7 - n % 7, dacă variabila n memorează un număr natural cu o singură cifră ?

1. *0;*
2. *1,14;*
3. *-6;*
4. *1;*

Rezolvare: c.

27. Variabila n este de tip real. Care dintre următoarele expresii are valoarea TRUE dacă şi numai dacă numărul real memorat în variabila x aparţine intervalului (5,8] ?

1. *(x<8)  && (x>=5);*
2. *(x<=8) || (x>5);*
3. *(x>8) || (x<=5);*
4. *(x<=8) && (x>5);*

Rezolvare: d.

28. Care dintre următoarele expresii C/C++ are valoarea 1 dacă şi numai dacă numărul real memorat în variabila x se află în intervalul (-2,2)?

1. *x\*x-4<=0*
2. *4-x\*x>0*
3. *(2<x)&&(x<-2)*
4. *(x-2)\*(x+2)>0*

Rezolvare: b.

29. Variabilele x şi y sunt de tip întreg, x memorând valoarea 4, iar y valoarea 2. Care dintre expresiile C++ de mai jos are valoarea 0?

1. *x-y!=0*
2. *x+y>x%y+1*
3. *x-2\*y==0*
4. *!(x==2\*y)*

Rezolvare: d.