Exercitiile din acest laborator necesita includerea urmatoarelor fisiere / biblioteci:
#include<stdio.h>
#include<conio.h>
#include<math.h>
- Realizati un program care sa inverseze valorile a doua variabile intregi pozitive folosind operatia XOR, adica sau exclusiv
void main() {
int a, b;
printf("a=");
scanf_s("%d", &a);
printf("b=");
scanf_s("%d", &b);
a = a ^ b;
b = b ^ a;
a = a ^ b;
printf("Dupa inversare vom avea:\na=%d\nb=%d", a, b);
_getch();
}
- Sa se citeasca de la tastatura un numar intreg natural, n, si sa se seteze pe 0 bitul k (dat de la tastatura) din n
void main() {
int n, k;
printf("Introduceti un numar natural: ");
scanf_s("%d", &n);
printf("Introduceti bitul ce se va seta pe 0: ");
scanf_s("%d", &k);
printf("\nIn urma setarii pe 0 a bitului %d in numarul %d, rezultatul va fi %d", k, n, (n & ~(1 << k)));
_getch();
}
- Sa se citeasca de la tastatura un numar intreg natural, n, si sa se seteze pe 1 bitul k (dat de la tastatura) din n
void main() {
int n, k;
printf("Introduceti un numar natural: ");
scanf_s("%d", &n);
printf("Introduceti bitul ce se va seta pe 1: ");
scanf_s("%d", &k);
printf("\nIn urma setarii pe 1 a bitului %d in numarul %d, rezultatul va fi %d", k, n, (n | (1 << k)));
_getch();
}
- Se citeste un numar natural n. Sa se verifice daca n este par sau impar, folosind operatii pe biti
void main() {
int n;
printf("Introduceti un numar natural: ");
scanf_s("%d", &n);
//operatorul & are rol de a testa bitii, daca n este impar atunci in reprezentarea in baza 2
//cel mai din dreapta bit este 1, ex: n=13, in binar este = 1101 si 1101 & 1 =1
//daca n = 14, in binar n=1110 deci cel mai din drepata bit va fi 0 si 1110 & 1 = 0
if ((n & 1) == 1)
printf("\nNumarul %d este impar", n);
else
printf("\nNumarul %d este par", n);
_getch();
}
- Sa se afiseze bitul de pe pozitia k a unui numar n, cu n si k date de la tastatura
void main(){
int n, k;
printf("Introduceti un numar natural: ");
scanf_s("%d", &n);
printf("Introduceti pozitia bitului dorit: ");
scanf_s("%d", &k);
if( (n >> k) & 1)
printf("\n\nBitul este 1");
else
printf("\nBitul este 0");
_getch();
}
- Sa se citeasca de la tastatura un numar intreg natural si folosind operatorul conditional ?: sa se verifice daca acel numar este pozitiv, negativ sau zero
void main() {
int numar;
printf("Introduceti un numarul intreg natural : ");
scanf_s("%d", &numar);
(numar < 0) ? printf("\nNumarul este negativ") : (numar>0) ? printf("\nNumarul este pozitiv") : printf("\nNumarul este egal cu zero");
_getch();
}
- Realizati un program care sa afiseze valoarea bitului de pe ultima pozitie(LSb=bitul cel mai putin semnificativ-inferior).
void main() {
unsigned int numar; //pentru o variabila de tip intreg fara semn
int i=0;
printf("Introduceti un numar: ");
scanf_s("%d", &numar);
if (numar == 0)
i = 0;
else
i = numar % 2;
printf("\nBitul de pe prima pozitie este: %d", i);
_getch();
}
- Se considera un numar natural n, dat de la tastatura. Sa se verifice daca n este o putere a lui 2, si sa se faca operatiile de inmultire respectiv impartire la 2 sau puteri ale lui 2.
void main() {
int n;
printf("Introduceti un numar natural: ");
scanf_s("%d", &n);
if ((n & (n - 1)) == 0) {
printf("\nNumarul %d este putere a lui 2", n);
printf("\nImpartirea numarului introdus %d la 2:", n);
printf("\nCatul este: %d", (n >> 1)); //8: 2^1=4, daca am scrie 2, ar insemna 8:2^2=2
printf("\nProdusul este: %d", (n << 1)); //8*2^1=16, daca am scrie 2 ar insemna 8*2^2=32
//n<<i echivalent cu n*2^i
//n>>i impartirea intreaga a lui n la 2^i
}
else
printf("\nNumarul %d nu este putere a lui 2", n);
_getch();
}
- Realizati un program ce rezolva ecuatia de gradul I, cu valorile lui a si b reale, introduse de la tastatura
void main() {
float a, b;
float x;
printf("Ecuatia de gradul I: ax+b=0");
printf("\nIntroduceti a=");
scanf_s("%f", &a);
printf("\nIntroduceti b=");
scanf_s("%f", &b);
if (b == 0)
printf("\nSolutia ecuatiei este 0");
else
if (a != 0) {
x = -b / a;
printf("\nSolutia ecuatiei %.0fx+%.0f=0 este x=%.2f", a, b, x);
}
else
printf("\nEcuatia este imposibila !");
_getch();
}
- Realizati un program ce rezolva ecuatia de gradul II
void main() {
float a=0, b, c, x1, x2, delta;
printf("Ecuatia de gradul II: ax^2+bx+c=0\n");
printf("Introduceti a=");
scanf_s("%f", &a);
if (a == 0){
printf("\nValoarea lui a trebuie sa fie diferita de 0");
printf("\nReintroduceti a=");
scanf_s("%f", &a);
}
printf("\nIntroduceti b=");
scanf_s("%f", &b);
printf("\nIntroduceti c=");
scanf_s("%f", &c);
delta = b*b - 4*a*c;
if (delta < 0)
printf("\nEcuatia nu are solutii reale!");
else {
if (delta > 0) {
x1 = (-b + sqrt(delta) )/ (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("\nSolutiile ecuatiei sunt:\nx1=%.2f\nx2=%.2f", x1, x2);
}
else {
x1 = -b/(2*a);
printf("\nEcuatia are doua solutii egale, si anume x1=x2=%.2f",x1);
}
}
_getch();
}
- Sa se citeasca 3 valori intregi de la tastatura a,b,c. Sa se afiseze in ordine crescatoare,
void main() {
int a, b, c;
printf("Introduceti a= ");
scanf_s("%d", &a);
printf("Introduceti b= ");
scanf_s("%d", &b);
printf("Introduceti c= ");
scanf_s("%d", &c);
if (a < b){
if (b < c)
printf("\n%d\t%d\t%d", a, b, c);
else
if (a < c)
printf("\n%d\t%d\t%d", a, c, b);
else
printf("\n%d\t%d\t%d", c, a, b);
}
else{
if (a < c)
printf("\n%d\t%d\t%d", b, a, c);
else
if (b < c)
printf("\n%d\t%d\t%d", b, c, a);
else
printf("\n%d\t%d\t%d", c, b, a);
}
_getch();
}