0% au considerat acest document util (0 voturi)
21 vizualizări7 pagini

Lab 2

Documentul conține exerciții de programare în C, fiecare având o rezolvare specifică. Exercițiile includ afișarea unui model de stele, simularea împărțirii cu rest, calcularea sumei primelor n numere naturale, calcularea sumei factorialelor, extragerea cifrelor unui număr, determinarea celei mai mari cifre, generarea unui număr fără cifre divizibile cu 3 și conversia temperaturilor din Fahrenheit în Celsius. Fiecare exercițiu este însoțit de un cod sursă care ilustrează soluția propusă.

Încărcat de

Bianca Gabriela
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
21 vizualizări7 pagini

Lab 2

Documentul conține exerciții de programare în C, fiecare având o rezolvare specifică. Exercițiile includ afișarea unui model de stele, simularea împărțirii cu rest, calcularea sumei primelor n numere naturale, calcularea sumei factorialelor, extragerea cifrelor unui număr, determinarea celei mai mari cifre, generarea unui număr fără cifre divizibile cu 3 și conversia temperaturilor din Fahrenheit în Celsius. Fiecare exercițiu este însoțit de un cod sursă care ilustrează soluția propusă.

Încărcat de

Bianca Gabriela
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Laborator 2

Exerciţiul 2.1. Să se afişeze mesajul formatat de mai jos, pentru n introdus de la tastatura.
Spre exemplu dacă n=4, se afişează:
*
**
***
****
Rezolvare:
#include <stdio.h>

int main() {
int n;

printf("Introduceti valoarea lui n: ");


scanf("%d", &n);

for (int i = 1; i <= n; i++) {


for (int j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}

return 0;
}

Exerciţiul 2.2. Fie a şi b două valori naturale, a >b. Să se simuleze împărţirea cu rest a lui a
la b (prin scăderi repetate).Să se determine câtul şi restul împărţirii.
Rezolvare:
#include <stdio.h>

int main() {
int a, b;
int cat = 0, rest;

printf("Introduceti valorile lui a si b (a > b): ");


scanf("%d %d", &a, &b);

if (b == 0) {
printf("Impartirea la zero nu este permisa!\n");
return 1;
}

rest = a;
while (rest >= b) {
rest = rest - b;
cat++;
}

printf("Rezultatul impartirii %d la %d este:\n", a, b);


printf("Catul = %d\n", cat);
printf("Restul = %d\n", rest);

return 0;
}

Exerciţiul 2.3. Să se calculeze suma primelor n numere naturale utilizând instrucţiunile


"while", prima variantă şi apoi "do while".
Rezolvare:
#include <stdio.h>

int main() {
int n, i = 1, suma = 0;

printf("Introduceti valoarea lui n: ");


scanf("%d", &n);

while (i <= n) {
suma = suma + i;
i++;
}

printf("Suma primelor %d numere naturale este: %d\n", n, suma);

return 0;
}

Exerciţiul 2.4. Să se calculeze expresia S=1+1*2+1*2*3+ ... +1*2*...*n, pentru n citit de la


tastatură.
Rezolvare:
#include <stdio.h>

int main() {
int n, i;
long long fact = 1, S = 0;

printf("Introduceti valoarea lui n: ");


scanf("%d", &n);

for (i = 1; i <= n; i++) {


fact = fact * i;
S = S + fact;
}

printf("Suma S = 1! + 2! + ... + %d! este: %lld\n", n, S);

return 0;
}

Exerciţiul 2.5. Citiţi de la tastatură un număr întreg, format cel putin din 3 cifre. Afişaţi
cifrele din care se compune numărul. Discuţii: În ce ordine putem afişa cifrele?
Rezolvare:
#include <stdio.h>
#include <stdlib.h>

int main() {
int n, temp, cifra, numCifre = 0;

printf("Introduceti un numar intreg de cel putin 3 cifre: ");


scanf("%d", &n);

temp = abs(n);
while (temp > 0) {
temp /= 10;
numCifre++;
}

if (numCifre < 3) {
printf("Numarul trebuie sa aiba cel putin 3 cifre!\n");
return 1;
}

temp = abs(n);
int cifre[numCifre];
for (int i = numCifre - 1; i >= 0; i--) {
cifre[i] = temp % 10;
temp /= 10;
}

printf("Cifrele numarului sunt: ");


for (int i = 0; i < numCifre; i++) {
printf("%d ", cifre[i]);
}
printf("\n");

return 0;
}

Exerciţiul 2.6. Determinaţi și afișaţi cea mai mare cifră care apare într-un număr natural,
citit de la tastatură.
Rezolvare:
#include <stdio.h>

int main() {
int n, maxCifra = 0, cifra;

printf("Introduceti un numar natural: ");


scanf("%d", &n);

if (n < 0) {
printf("Numarul trebuie sa fie natural!\n");
return 1;
}

while (n > 0) {
cifra = n % 10;
if (cifra > maxCifra) {
maxCifra = cifra;
}
n /= 10;
}

printf("Cea mai mare cifra este: %d\n", maxCifra);


return 0;
}

Exerciţiul 2.7. Pentru un număr natural n, sa se genereze numărul obtinut prin eliminarea
cifrelor divizibile cu 3, fără a inversa numărul iniţial.
Rezolvare:
#include <stdio.h>

int main() {
int n;
char str[100];
char rezultat[100];
int j = 0;

printf("Introduceti un numar natural: ");


scanf("%d", &n);

if (n < 0) {
printf("Numarul trebuie sa fie natural!\n");
return 1;
}

sprintf(str, "%d", n);

for (int i = 0; str[i] != '\0'; i++) {


int cifra = str[i] - '0';
if (cifra % 3 != 0) {
rezultat[j++] = str[i];
}
}
rezultat[j] = '\0';
if (j == 0) {
printf("Toate cifrele sunt divizibile cu 3. Numarul rezultat este 0.\n");
} else {
printf("Numarul obtinut este: %s\n", rezultat);
}

return 0;
}
Exerciţiul 2.8. Sa se genereze temperaturile exprimate in grade Fahrenheit - Celsius, din
plaja temperaturilor exprimate in grade Fahrenheit este 0 la 300, cu pasul
20. Formula de conversie este C = (F - 32) /1.8.
Rezolvare:
#include <stdio.h>

int main() {
int F;
float C;

printf("Fahrenheit\tCelsius\n");
printf("------------------------\n");

for (F = 0; F <= 300; F += 20) {


C = (F - 32) / 1.8;
printf("%3d\t\t%.2f\n", F, C);
}

return 0;
}

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