Exercitiile din acest laborator necesita includerea urmatoarelor fisiere / biblioteci:
#include<stdio.h>
#include<conio.h>
- Calculati suma a doua numere naturale intregi introduse de la tastatura, folosind operatii pe biti
void main() {
int a, b;
printf("a=");
scanf_s("%d", &a);
printf("b=");
scanf_s("%d", &b);
int x = 0;
while (b != 0) {
x = a&b;
a = a^b;
b = x << 1;
}
printf("\nSuma este: %d ", a);
_getch();
}
- Calculati diferenta (scaderea) dintre doua numere naturale intregi introduse de la tastatura, folosind operatii pe biti
void main() {
int a, b;
printf("a=");
scanf_s("%d", &a);
printf("b=");
scanf_s("%d", &b);
int x = 0;
while (b != 0) {
x = (~a) & b;
a = a^b;
b = x << 1;
}
printf("\nSuma este: %d ", a);
_getch();
}
- Calculati produsul a doua numere naturale intregi introduse de la tastatura, folosind operatii pe biti
void main() {
int a, b;
printf("a=");
scanf_s("%d", &a);
printf("b=");
scanf_s("%d", &b);
int x = 0;
while (b != 0) {
if ((b & 1) != 0) {
x += a;
}
a <<= 1;
b >>= 1;
}
printf("\nSuma este: %d ", x);
_getch();
}
- Sa se verifice daca un numar intreg, introdus de la tastatura, este prim sau nu
void main() {
int n, prim=0;
printf("Introduceti numarul = ");
scanf_s("%d", &n);
for (int i = 1; i <= n; i++) {
if ((n % i) == 0)
prim++;
}
if (prim == 2)
printf("\nNumarul %d este prim", n);
else
printf("\nNumarul %d nu este prim", n);
_getch();
}
- Sa se calculeze suma S=1^2+2^2+3^3...+n^2, cu n introdus de la tastatura
void main() {
int n, suma=0;
printf("Introduceti numarul = ");
scanf_s("%d", &n);
for (int i = 1; i <= n; i++)
suma = suma + i*i;
printf("\nSuma = %d", suma);
_getch();
}
- Suma si produsul primelor n numere naturale intregi mai mici decat n, din 5 in 5, cu n introdus de la tastatura
void main() {
int n, suma=0, produs=1;
printf("Introduceti numarul = ");
scanf_s("%d", &n);
for (int i = 5; i <= n; i = i + 5) {
suma = suma + i;
produs = produs*i;
}
printf("\nSuma primelor %d numere, din 5 in 5, este = %d, iar produsul = %d", n, suma, produs);
_getch();
}
- Afisarea tabelului Fahrenheit-Celsius pt f=0,20,...,300 folosind formula C=(5/9)*(F-32)
void main() {
int i,c;
printf("Tabelul Fahrenheit-Celsius este: \n");
for (i = 0; i <= 300; i += 20) {
double c = (5.0 / 9.0)*(i - 32); //conversia tipului int la double
printf("%g\n", c);
}
_getch();
}
- Sa se citeasca un numar de la tastatura si sa se afiseze pe ecran un triunghi de forma
*
**
***
....
****...* (n caractere *)
void main() {
int n, i,j;
//printf("Introduceti numarul = ");
//scanf_s("%d", &n);
do {
printf("Introduceti un numar intreg pozitiv = ");
scanf_s("%d", &n);
} while (n <= 0);
for (i = 1; i <= n; i++) {
for (j = 0; j < i; j++) {
printf("*");
}
printf("\n");
}
_getch();
}
- Aflati si afisati cati biti de 1 sunt in reprezentarea binara a unui nr introdus de la tastatura, folosind : a) for si b) operatii pe biti
void main() {
int n, i, unu=0, numar;
int lungime = sizeof(int) * 8;
printf("Introduceti numarul = ");
scanf_s("%d", &n);
numar = n;
for (i = 0; i < lungime; i++) {
if ((numar % 2) == 1)
unu++;
numar = numar / 2;
}
//operatii pe biti
// while (numar != 0) {
// if (numar & 1 == 1)
// unu++;
// numar = numar >> 1;
// }
if (unu >= 1)
printf("\nNumarul %d are in reprezentarea sa binara %d biti de 1", n, unu);
else
printf("\nNumarul %d are in reprezentarea sa binara %d biti de 1", n, unu);
_getch();
}
- Calculati cmmdc si cmmmc a doua numere naturale nenule, introduse de la tastatura
void main() {
int a, b, cmmmc, rest;
int x, y;
printf("Introduceti primul numar intreg pozitiv\na = ");
scanf_s("%d", &a);
while (a < 1) {
printf("\nReintroduceti a = ");
scanf_s("%d", &a);
}
printf("\nIntroduceti cel de-al doilea numar intreg pozitiv\nb = ");
scanf_s("%d", &b);
while (b < 1) {
printf("\nReintroduceti b = ");
scanf_s("%d", &b);
}
x = a; y = b;
while (b != 0){ //prin impartiri repetate
rest = a%b;
a = b;
b = rest;
}
printf("\nCmmdc este %d", a);
cmmmc = (x*y) / a;
printf("\nCmmmc este %d", cmmmc);
_getch();
}
- Se considera un numar natural n. Sa se afiseze reprezentarea lui n in baza 2 folosind operatiile logice pe biti
void main() {
int n;
int lung = sizeof(int) * 8;
printf("Introduceti un numar intreg a=");
scanf_s("%d", &n);
printf("\nReprezentarea in baza 2 a nr %d este: \n", n);
for (int i = lung-1; i >= 0; i--)
printf("%d",((n >> i) & 1));
_getch();
}
- Afisarea unui numar intreg pe 32 de biti (sau in functie de versiune compilatorului)
void main() {
int a, r[32];
int lung = sizeof(int) * 8;
printf("Introduceti un numar intreg a=");
scanf_s("%d", &a);
for (int i = 0; i < lung; i++) {
r[i] = a % 2;
a = a / 2;
}
printf("\nReprezentarea binara este:\n");
for (int i = lung-1; i>=0; i--)
printf("%d", r[i]);
_getch();
}
- Program care recunoaste operatia aritmetica introdusa de la tastatura si afiseaza rezultatul operatiei asupra celor doua numere
void main() {
int a, b, operatie;
printf("Introduceti primul numar = ");
scanf_s("%d", &a);
printf("Introduceti cel de-al doilea numar = ");
scanf_s("%d", &b);
printf("Introduceti o operatie: ");
operatie=_getche(); //citeste un caracter cu ecou
switch(operatie) {
case '+': printf("\n%d + %d = %d", a, b, a + b);
break;
case '-': printf("\n%d - %d = %d", a, b, a - b);
break;
case '*': printf("\n%d * %d = %d", a, b, a * b);
break;
//pentru a putea face impartirea trebuie sa facem vonversia tipurilor folosind cast()
//tipul int in convertim la tipul float pt a putea face impartirea a oricaror doua numere intregi naturale
case '/': printf("\n%.0f / %.0f = %.2f", (float)a, (float)b, ((float)(a) / (float)(b)));
break;
case '%': printf("\n%d mod %d = %d", a, b, a % b);
break;
default: printf("\nOperatie/Caracter necunoscut/a");
}
_getch();
}