IANDA ANTON – MIHAI
Grupa 8107 B
Sectiunea Autovehicule Rutiere
PROBLEME PROGRAMARE
1. Programul afiseaza un mesaj simplu de salut
#include <stdio.h>
main()
{ printf ("SALUT!\n"); } /* se afiseaza mesajul SALUT! */
2. Exemplu de program simplu, in C++
#include <stdio.h>
main() /* un program simplu, functia programului */
{ /* inceputul corpului functiilor */
int num; /* se defineste variabila num de tip intreg */
num = 1; /* se initializeaza variabila num cu valoarea 1 */
printf("\nEste un simplu "); /* utilizarea functiei printf() */
printf("exemplu de program.\n");
printf("Numarul favorit este %d, deoarece ");
printf("este primul.\n", num);
} /* sfarsitul corpului functiilor */
3. Exemplificare structura program C/C++
#include<stdio.h>
main() /* functia programului */
{ int numar; /* se defineste variabila numar de tip intreg */
numar=1; /* i se atribuie variabilei numar, valoarea 1 */
printf("\nProgramul exemplifica structura unui program.\n");
printf("%d este primul numar \n",numar); /* printf ajuta la afisarea
primului numar */
}
4. Programul exemplifica utilizarea a unui sir de caractere
#include <stdio.h> /* linia 1 */
#define SIR /* asignarea unui nume simbolic */
main ( ) /* functia programului */
{ /*inceputul corpului functiei, a unei intructiuni */
char nume[50]; /* se defineste vectorul nume de tip caracter */
printf("\nProgramul exemplifica citirea/scrierea unui sir de caractere.\n");
printf("Cum te cheama ?\n"); /* print f afiseaza intrebarea : cum te cheama? */
scanf("%s", nume); /* descriptorul %s citeste o data de tip sir de caractere*/
printf("Salut, %s , %s !\n", nume, SIR);
} /* sfarsitul corpului functiei */
5. Programul exemplifica utilizarea unui sir de caractere, si a unor functii
#include <stdio.h>
#define SIR
main ( )
{ char nume[50]; /* se defineste vectorul nume de tip character */
printf("\nProgramul exemplifica citirea/scrierea unui sir de carcatere,\n"
"precum si spatiul de memorie ocupat de un sir de caractere.\n");
printf("Cum te cheama ?\n");
scanf("%s", nume);
printf("Salut, %s !. %s \n", nume, SIR);
printf("Numele are %d litere, si ocupa %d octeti.\n",
strlen(nume), sizeof nume);
printf("Propozitia \"SIR\": \"%s\"\n\tare %d litere, si ocupa %d octeti.\n",
SIR , strlen(SIR), sizeof (SIR)); }
6. Programul determina daca un numar este par sau nu
#include <stdio.h> /* fisiere-header care se gaseste într-un subdirector din
radacina directorului unde e instalat compilatorul */
main()
{ int numar, rest; /* se definesc variabilele rest si numar de tip intreg */
printf("\nProgramul determina daca un numar intreg este par sau nu.\n");
printf ("Introduceti numarul:"); /* se introduce numarul */
scanf ("%d", &numar);
rest = numar % 2; /* se verifica paritatea restului, daca este sau nu par */
if ( rest ) printf ("Este numar impar\n"); /* daca restul nu este par,
afiseaza “este numar impar” */
else /* altfel */ printf ("Este numar par\n"); }
7. Programul exemplifica utilizarea pointerilor la tipuri standard
#include <stdio.h>
main()
{ int i1, i2 ; /* se declara i1 si i2 de tip intreg */
int *p1, *p2; /* se declara p1 si p2 de tip intreg */
printf("\nProgramul exemplifica utilizarea pointerilor la tipuri de date "
"standard.\n"); i1=5;
p1 = &i1; /* pointer la i1, la valoarea intreaga 5 */
i2 = *p1/2 + 10; /* 5/2 + 10 = 12, deoarece *p1 este de tip int*/
p2 = p1; /* pointerului p2 i se atribuie aceeasi valoare cu p1 */
printf("i1 = %i, i2 = %i, *p1 = %i , *p2 = %i , dupa instructiunile: "
"p1=&i1, p2=p1.\n", i1, i2, *p1, *p2);
printf ("p1 = %p, p2 = %p, valori tiparite cu specificatorul p\n", p1, p2);
printf ("p1 = %x, p2 = %x, valori tiparite cu specificatorul x\n", p1, p2); }
8. Programul calculeaza distanta dintre doua puncte din plan-
exemplu de utilizare 'typedef'
#include<stdio.h>
#include<math.h>
main()
{ typedef struct /* typedef permite atribuirea numelui symbolic cuvantului struct */
{ double x,y; /* se definesc variabilele x si y de tip data */
} PUNCT;
PUNCT p1,p2;
double difx,dify; /* se definesc dify, dify de tip data */
printf("\nProgramul exemplifica utilizarea declaratiei \"typedef\"\n"
"si determina distanta dintre doua puncte din plan.\n");
printf("Coordonatele punctului A(x,y):\n"); /* se scriu coordonatele puntului A
*/
scanf("%lf%lf",&p1.x,&p1.y);
printf("Coordonatele punctului B(x,y):\n");
scanf("%lf%lf",&p2.x,&p2.y);
difx=p1.x-p2.x;
dify=p1.y-p2.y;
printf("Distanta dintre cele doua puncte este: %5.2lf\n",
sqrt(pow(difx,2)+pow(dify,2)));
9. Programul calculeaza varsta in luni, pentru o varsta data in ani si luni
#include <stdio.h>
main ( )
{ int ani, luni, ani_l ; /* se definesc aceste variabile */
printf("\nProgramul va determina varsta in numarul total de luni.\n");
printf ( "Cati ani aveti ( ani , luni ) ? " ) ; /* se solicita varsta in ani si luni */
scanf ("%d %d", & ani, &luni); /* citeste varsta */
ani_l =ani*12+luni; /* calculeaza varsta in luni */
printf ("Varsta in luni:%d\n",ani_l); }
10. Programul care realizeaza conversia unui numar binar -> la intreg
#include <stdio.h>
main()
char car; /* se defineste car de tip character */
int val = 0; /* i se atribuie variabilei Valoare numarul 0, variabila fiind de
tip intreaga */
printf ("\nProgramul realizeaza conversia din binar la intreg zecimal.\n");
printf ("Introduceti un numar binar:");
scanf ("%c", &car);
while (car == '0' || car == '1' )
val = val*2 + (car & 1);
scanf ("%c", &car);
printf ("Valoarea zecimala (intreaga) este: %d\n", val);
11. Programul determina daca un numar este pozitiv, negative sau zero
#include <stdio.h>
main()
{
int numar;
printf("\nSe determina daca numarul este pozitiv, negativ sau zero!\n");
printf("Introduceti un numar acum ---> ");
scanf("%d", &numar );
printf("Numarul este");
(numar < 0) ? printf("negativ\n") : ((numar > 0) ?
printf(" pozitiv\n") : printf(" zero\n"));
12. Programul citeste si tipareste numele utilizatorului
#include <stdio.h>
#include <conio.h>
#define INTREB /* "Cum te cheama ? " */
#define SALUT /* "Salut ! " */
void main ( )
{ char nume [50] ; /* se defineste vectorul nume de tip character */
printf("\nProgramul citeste si tipareste numele utilizatorului.\n");
printf (INTREB);
scanf ("%s", nume);
printf (SALUT" %s ", nume);
printf ("\nNumele tau are %d litere, dar s-au rezervat %d locatii "
"de memorie.\n", strlen (nume), sizeof nume);
printf ("Propozitia \"%s\" are %d caractere ", INTREB, strlen(INTREB));
printf ("si ocupa %d octeti de memorie\n", sizeof (INTREB));
getch();
}
13. Programul afiseaza un tablou de caractere
#include <stdio.h>
void main(void) {
char salut [] = {'S', 'a', 'l', 'u', 't', '!'};
int i;
printf("\nProgramul afiseaza un tablou de caractere:\n");
for ( i =0; i < 6; ++i)
printf("%c", salut[i]);
printf("\n");
[Link] afiseaza un sir de caractere cu tablou de caractere
#include <stdio.h>
void main(void) {
char salut [] = {'S', 'a', 'l', 'u', 't', '!', '\0'};
int i;
printf("\nSe afiseaza un sir de caractere, ca un tablou de caractere:\n");
for ( i =0; i < 6; ++i)
printf("%c", salut[i]);
printf("\n");
printf("\nSe afiseaza acelasi sir de caractere, ca un sir:\n");
printf("%s!\n", salut);
}
15. Programul afiseaza intervalul intreg [k, k+1] in care se afla o valoare reala
#include <stdio.h>
main ()
float num; /* se defineste variabila num de tip real */
int limita1, limita2; /* se definesc limita1 si limita2 de tip intregi */
printf("\nProgramul afiseaza intervalul intreg [ k , k+1 ] "
"in care se afla un numar real.\n");
printf ( "Introduceti un numar real : " );
scanf ( "%f" , &num ) ;
limita1 = num ;
limita2 = (limita1 >= 0 ) ? limita1+1 : limita1 - 1;
(limita1>=0)? printf ("Numarul este in intervalul [%d , %d]\n",limita1, limita2) :
printf ("Numarul este in intervalul [%d , %d]\n", limita2, limita1);
16. Programul genereaza cel mult 100 numere Fibonacci
#include <stdio.h>
void main ( )
long int fib[50]; /* marimea vectorului intreg */
int i , n ;
fib [0] = 0 ; fib [1] = 1 ; /* initializarea primelor doua numere */
printf("\nProgramul genereaza cel mult 100 numere Fibonacci.\n");
printf ("Specificati dimensiunea sirului Fibonacci (<= 50) : ") ;
scanf ("%d", &n ) ;
for (i =2 ; i < n ; i++)
fib [i] = fib [i-1] +fib [i-2] ;
for (i = 0 ; i < n ; i++)
printf ( " %12li / " , fib [i] ) ;
printf("\n");
17. Programul afiseaza codul numeric ASCII pentru un caracter
#include <stdio.h>
#include <conio.h>
main ( )
char car ;
clrscr();
printf("Programul afiseaza codul unei taste in zecimal, hexa si octal.\n");
printf ("Apasati o tasta:" ) ;
scanf ("%c", &car) ;/* citeste codul tastei (caracterului) */
printf ("Codul tastei (caracterului) \"%c\" este %d (zecimal), "
"%x (hexa), %o (octal)\n", car, car , car, car);
18. Programul elimina spatiile (blancurile) dintr-un sir de caractere
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
int i, j;
char sir[100], sir1[100];
clrscr();
printf ("Porgramul elimina spatiile dintr-o linie de text.\n");
printf ("Introduceti linia (sirul de caractere):\n");
gets (sir1);
j = 0; /* contorul de caractere pentru sirul nou, fara spatii */
for( i = 0 ; i <= (strlen(sir1)) ; i++)
if (sir1[i] != ' ')
sir[j] = sir1[i];
j++;
sir[j] = '\0';
printf("Sirul fara spatii:\n\"%s\"\n",sir);
19. Converteste si afiseaza in binar o valoare intreaga
#include<stdio.h>
main()
char *int_la_str_bin(int,char[]);
char strbin[1+8*sizeof(int)];
int numar;
printf ("\nSe converteste o valoare intreaga din zecimal in binar.\n");
printf ("Conversia ia sfarsit cu o valoare nenumerica.\n");
printf ("Numar = ");
while (scanf ("%d", &numar) == 1)
printf ("Valoarea binara a numarului %d este %s\nNumar = ",
numar, int_la_str_bin(numar,strbin));
char *int_la_str_bin ( int n, char *ps )
int i;
static int dim = 8*sizeof ( int );
for ( i = dim-1 ; i >= 0 ; i--, n >>= 1 )
ps[i] = ( 1&n ) + '0';
ps[dim] = '\0';
return ( ps );
20. Programul determina cel mai mare divizor comun pentru doua numere
a,b pozitive
#include<stdio.h>
void main()
{
int a, b, rest;
printf ("\nIntroduceti doua numere intregi:\n");
scanf ("%d %d", &a, &b);
while (b)
rest = a % b;
a = b;
b = rest;
printf ("Cel mai mare divizor este: %d\n", a);
21. Programul determina cel mai mare divizor comun pentru perechi
de numere intregi, introduse de la tastatura,
pana se introduce o valoare egala cu zero, utilizand o functie
#include <stdio.h>
int cmmdc (int a,int b)
int rest; /* se defineste variabila rest de tip intreg */
while ( b != 0 )
{ rest = a % b;
a = b;
b = rest; }
return ( a ); /* se returneaza variabila a */
} void main ()
{ int cmmdc (int a, int b);
int x, y;
printf("\n\nProgramul determina \"cel mai mare divizor comun\","
"pentru perechi de numere.\nProgramul ia sfarsit "
"cand unul dintre cele doua numere este 0.\n");
printf ("Introduceti doua numere (0=stop): ");
scanf ("%d%d", &x, &y);
while ( ( x*y ) != 0 )
printf ("Cel mai mare divizor comun este :%d\n", cmmdc (x,y));
printf ("Introduceti doua numere (0=stop): ");
scanf ("%d%d", &x, &y);
} }
22. Program de rezolvare a ecuatiei de gradul II
#include <stdio.h>
#include <math.h>
void main()
{ double a, b, c, delta, real, imag; /* se defines a,b,c, delta, real si imag de tip
double */
printf ("Introduceti coeficientii ecuatiei de gradul al doilea:”);
scanf ("%lf", &a);
printf ("b=");
scanf ("%lf", &b);
printf ("c=");
scanf ("%lf", &c);
if (a)
{
delta = pow (b,2) - 4*a*c;
real = -b/2/a;
imag = sqrt(fabs(delta))/2/a;
if (delta >= 0) /* daca delta este mai mare sau egal ca 0 afiseaza
urmatoarea */
printf ("X1=%5.2lf , X2=%5.2lf\n", real-imag, real+imag);
else
printf ("X1=%5.2lf-i*(%5.2lf), X2=%5.2lf+i*(%5.2lf)\n",
real, imag, real, imag);
else
if(b)
printf ("Ecuatia de grad I cu solutia X=%5.2lf\n", -c/b);
else
printf ("Ecuatie degenerata\n");
23. Media valorilor pozitive dintr-un sir de valori ce se termina cu 0
#include<stdio.h>
void main()
double val, suma = 0; /* se defineste variabila val de tip double si se atribuie
sumei valoarea 0 */
int nv =1, nvp = 0; /* se atribuie variabilelor de tip intreg , nv valoarea 1, si
nvp valoarea 0 */
printf ("\nProgramul determina media numerelor pozitive\n");
printf ("Introduceti numere (0 = sfarsit)\nNumar (1)=");
scanf ("%lf", &val);
while (val != 0)
nv++;
if (val > 0)
nvp++;
suma += val;
printf ("Numar (%d)= ", nv);
scanf ("%lf", &val);
} /* while */
if(nvp>0)
printf ("Media valorilor pozitive este %5.2f\n", suma/nvp);
else
printf ("Nu s-au introdus valori pozitive\n");
24. Calculeaza suma factorialelor pentru un n dat:
suma = -1! +2! -3! +4! -5! +6! -7! +8! - . . . . . .
folosind direct formula "suma de (-1)^k * k
#include<stdio.h>
void main()
long int sum = 0, i, k, n, fact;
printf("\nProgramul calculeaza suma: -1! +2! -3! +4! -5! +. . . +(-)n. .\n");
printf ("n="); scanf ("%li", &n);
for ( k = 1 ; k <= n ; ++k )
fact = 1;
for ( i = 1 ; i <= k ; i++ )
fact = fact * i;
if ( k % 2 )
fact = - fact;
sum += fact;
printf("Pentru n=%li, suma factorialelor este: %li\n", n, sum); }
25. Calculeaza suma factorialelor pentru un n dat:
suma = -1! +2! -3! +4! -5! +6! -7! +8! - . . . . . .
#include<stdio.h>
void main()
long int suma = 0, k, n, fact;
printf("\nProgramul calculeaza suma: -1! +2! -3! +4! -5! +. . . +(-)n. .\n");
printf ("n=");
scanf ("%ld", &n);
fact = 1;
for ( k = 1 ; k <= n ; k++ )
{ fact = - fact*k;
suma += fact; }
printf("Suma factorialelor este: %li\n", suma); }
26. Tipareste un numar intreg (de maxim 9-10 cifre) in ordie inversa
#include<stdio.h>
void main()
{ long int numar, rest;
printf("\nProgramul afiseaza un numar intreg (maxim 9-10 cifre) in ordie "
"inversa.\n");
printf ("Introduceti un numar intreg:");
scanf ("%li",&numar);
printf ("Numarul scris in ordine inversa:");
do
{ rest=numar%10;
printf("%d", rest);
numar/=10;
while (numar);
printf ("\n");
27. Tipareste un numar intreg (de maxim 9-10 cifre) in ordie inversa
#include<stdio.h>
void main()
long int numar, rest;
printf("\nProgramul afiseaza un numar intreg (maxim 9-10 cifre) in ordie "
"inversa.\n");
printf ("Introduceti un numar intreg:");
scanf ("%li",&numar);
printf ("Numarul scris in ordine inversa:");
do
rest=numar%10;
printf("%d", rest);
numar/=10;
while (numar);
printf ("\n"); }
28. Programul calculeaza puterea intreaga a unui numar real, x^n,
utilizand un numar minim de inmultiri de numere reale
#include <stdio.h>
#include <math.h>
void main()
int n,ni, p=1, nr_inmult=0; /* p=cea mai mica putere a lui 2 mai mare ca n*/
int semn; /* memoreaza semnul lui n */
double x, y=1; /* y = x^n, nr_inmult = numarul de inmultiri efectuate */
printf ("\nSe calculeaza x^n, utilizand un numar minim de inmultiri.\n");
printf ("x (real) = "); scanf ("%lf", &x);
printf ("n (intreg) = "); scanf ("%d", &n);
ni = n;
semn = n < 0;
n = abs ( n );
while ( p <= n )
p = p * 2;
do
{ p = p / 2;
y = y*y;
nr_inmult++;
if ( n >= p )
{ n = n - p;
y=y*x;
nr_inmult++;
} while ( p > 1 );
if ( semn )
y=1/y;
printf("x^n = %e, utilizand %d inmultiri .\n", y, nr_inmult);
printf("Rezultatul obtinut cu functia \"pow(x,n)\" = %f (dupa "
"%d inmultiri)\n", pow(x,ni), ni);
29. Programul calculeaza valorea unui polinom , intr-un punct x dat.
Ind.: se va utiliza pentru calculul valorii forma de inmultire prin
impachetare :
P(x) = {{{{ a(n)*x + a(n-1) }*x + a(n-2) }*x + a(n-3)}*x +..a(1)}*x+a(0)
#include <stdio.h>
#include <conio.h>
void main(void)
{ int grad, i, val, x;
int coef[10];
clrscr();
printf ("Programul calculeaza valoarea unui polinom de grad n "
"intr-un punct x dat\n\n");
printf ("Introduceti gradul polinomului:");
scanf ("%d", &grad);
for ( i = grad ; i >= 0 ; i--)
printf ("Introduceti coeficientul lui x la puterea %d:", i);
scanf ("%d", &coef[i]);
printf ("Introduceti x-ul in care se calculeaza valoarea polinomului:");
scanf ("%d", &x);
val = 0;
for ( i = grad ; i >= 0 ; i--)
val = val * x + coef[i];
printf ("Valoarea este: %d", val);
30. Se calculeaza produsul a doua matrice, daca se pot inmulti (adica
numarul de coloane de la prima este egal cu numarul de linii de la a 2-a)
#include <stdio.h>
#define DIM 10
void main()
{
double a[DIM][DIM], b[DIM][DIM], c[DIM][DIM];
double x;
int la, ca, lb, cb, i, j, k;
printf("\nSe calculeaza produsul a doua matrice, daca se pot inmulti.\n");
printf ("Dimensiunea matricei A (linii,coloane):");
scanf ("%d%d", &la, &ca);
printf ("Dimensiunea matricei B (linii,coloane):");
scanf ("%d%d", &lb, &cb);
if (ca != lb)
printf ("Nu se pot inmulti\n");
else
printf ("Matricea A:\n");
for ( i = 0 ; i < la ; i++)
for ( j = 0; j < ca ;j++)
printf ("A(%d,%d)=",i+1, j+1);
scanf ("%lf", &x);
a[i][j] = x;
printf("Matricea B:\n");
for ( i = 0 ; i < lb ; i++)
for ( j = 0 ; j < cb ; j++)
printf ("B(%d,%d)=", i+1, j+1);
scanf ("%lf", &x);
b[i][j] = x;
printf("Matricea rezultata dupa inmultire:\n");
for ( i = 0 ; i <la ; i++)
for ( j = 0 ; j < cb ; j++)
c[i][j] = 0;
for ( k = 0 ; k < ca ; k++)
c[i][j] += a[i][k] * b[k][j];
printf ("C(%d,%d)=%.2lf\n", i+1, j+1, c[i][j]);
}}}
31. Programul determina numerele prime din intervalul [2 , n]
#include <stdio.h>
#include <math.h>
void main ( )
int i, n, p, este_prim, prim [1000], index_prim;
prim [0] = 2;
prim [1] = 3;
printf ("\nSe determina numerele prime in intervalul [2 , n], n= ");
scanf ("%d", &n);
index_prim = 1;
for (p = 5 ; p <= n ; p = p + 2)
{
este_prim = 1;
for (i = 1; este_prim && i <= index_prim; i++)
este_prim = p % prim [i];
if (este_prim)
index_prim ++;
prim [ index_prim ] = p;
for ( i = 0 ; i <= index_prim ; i++)
printf ( "%6i / " , prim [i]);
printf (" \n " ) ; }
32. Programul realizeaza conversia unui numar intreg intr-o alta baza
#include <stdio.h>
#include <conio.h>
#define LUNG_MAX 32
void main ()
{ int numar, baza, ind1, ind2; /* se definesc variabilele baza, indice1 si indice 2
de tip intreg */
char cifra [ LUNG_MAX ], aux; /* se definesc vectorul cifra si variabila auxiliar
de tip character */
clrscr();
printf("Programul coverteste un numar intreg intr-o alta baza (2-36).\n");
printf ("Numarul de convertit = ");
scanf ("%ld", &numar);
printf ("Conversie in baza :");
scanf ("%ld%", &baza);
if ( numar < 0 )
{ printf ("-");
numar = - numar; }
ind1 = 0 ;
do
{ ind1 ++;
if ( numar % baza < 10 )
cifra [ ind1 ] = '0' + numar % baza;
else
cifra [ ind1 ] = 'A' + numar % baza - 10;
numar /= baza;
} while ( numar > 0 );
for ( ind2 = 0 ; ind2 <= ind1/2 ; ind2 ++ )
{ aux = cifra[ind2];
cifra[ind2] = cifra[ind1-ind2];
cifra[ind1-ind2] = aux; }
cifra[ind1] = '\0';
printf ("%s", cifra);
printf("\n");
33. Programul exemplifica eroarea de rotunjire a unui rezultat real
# include <stdio.h>
main ( )
{ float a , b ; /* se definesc variabilele a si b de tip real */
printf("\nExemplifica rotunjirea rezultatului unei operatii de tip aditiv "
"cu numere reale.\n");
printf("La numarul real, de tip \"float\", 5.0e+7 se aduna, respectiv "
"scade 1 -> a, b: \n");
a = 5.0e+7 + 1.0 ;
b = 5.0e+7 - 1.0 ;
printf (" a = %f \n" , a);
printf (" b = %f \n" , b);
printf("Micsorand cu o unitate exponentul numarului scaderea/adunarea\n"
"unei unitati se va reflecta in reazultat:\n");
a = 5.0e+6 + 1.0 ;
b = 5.0e+6 - 1.0 ;
printf (" a = %f \n" , a);
printf (" b = %f \n" , b); }
34. Exemplu de utilizare de secvente (caractere) de tip 'escape'
#include <stdio.h>
main( )
float salariu ;
printf("\nExemplificarea utilizarii secventelor de tip \"escape\"\n");
printf ("\nSpecificati salariul lunar : ");
printf (" $ \b\b\b\b\b\b\b\b") ;
scanf ("%f", &salariu) ;
printf ( "\ n\t\t $%.2f pe luna=$%.2f pe an", salariu, salariu*12.0);
printf ( "\r Oho ! \n") ;
printf ( "\t\t\"\\\\\\\\\\\\\\\\\\\\\\\t\\\\\\\\\"\n" ); }
35. Se realizeaza conversia unui numar intreg intr-o baza oarecare - 2..36
#include <stdio.h>
#define LUNG_MAX 32
void main ()
char cifra[LUNG_MAX];
int numar, baza, indice;
printf ("\nNumar de convertit: "); scanf ("%d", &numar);
printf("In baza: "); scanf ("%d", &baza);
indice = 0;
printf("Numarul %d in baza \"%d\" este: ", numar, baza);
if ( numar < 0 )
{ printf("-");
numar = - numar; }
do { if ( numar % baza < 10 )
cifra[indice] = '0' + numar % baza;
else
cifra[indice] = 'A' + numar % baza - 10;
numar /= baza;
indice++;
} while(numar>0);
for ( indice-- ; indice >= 0 ; indice-- )
printf("%c", cifra[indice]);
printf("\n");
36. Program ce afiseaza (genereaza) numerele prime in intervalul [3,n];
#include<stdio.h>
void main()
long int n, i, div, este_prim, contor_np=2;
printf ("\nAfiseaza numerle prime pana la n=");
scanf ("%ld", &n);
printf ("\n%9d,%9d", 1, 2);
for( i=3 ; i <= n ; i += 2 )
div=3;
do
este_prim = i % div;
div += 2;
while(este_prim && div*div <= i);
if (este_prim)
{ printf(",%9ld", i);
contor_np++; } }
printf(".\nNumarul total de numere prime este: %ld\n", contor_np); }
37. Calculeaza pana la o limita specificata suma seriei:
1 + 1/2 + 1/3 + 1/4 + . . . 1/n > limita
programul va afisa fiecare suma si in final numarul de termeni insumati
#include <stdio.h>
#define MAX_TERMENI 1000
void main()
long int n = 0;
long double suma = 0, limita;
printf("\nProgramul calculeaza suma unei serii pana la o limita,\n\tdar nu "
"mai mult de %d termeni.\nSeria este: 1 + 1/2 + 1/3 + 1/4 + . . . "
"1/n > limita\n", MAX_TERMENI);
printf ("Specificati limita: ");
scanf ("%Lf", &limita);
do
n ++;
if (n % 100 == 0)
printf ("Pasul=%li\tSuma=%Lf\n", n, suma);
suma += (long double) 1/n;
while (suma < limita && n < MAX_TERMENI);
printf("Suma finala este : %Lf\n", suma );
printf("Numarul de termeni insumati este: %li\n", n);
38. Programul citeste un caracter si in functie de acesta se termina sau se
executa ciclic
#include <iostream.h>
void main(void)
int gata = 1;
char litera;
while (gata)
cout << endl;
cout << "Programul citeste caractere, cat timp acestea sunt: d, D, n sau N."
<< endl;
cout << "Pentru orice alt caracter tastat programul se termina si "
"afiseaza caracterul." << endl;
cout << "Tasteaza D(d) sau N(n) si apoi Enter pentru a continua: ";
cin >> litera;
if ((litera != 'D') && (litera != 'd') && (litera != 'N') && (litera != 'n'))
gata = 0;
cout << '\a'; //Sunet pentru altfel de caracter
cout << "Carcaterul tastat a fost " << litera << endl;
39. Programul citetse un sir de caractere (max. 80) si
afiseaza sirul, numai dupa primul spatiu
#include <stdio.h>
void main ( )
char s[80];
char *ptrc;
int i;
printf("\nProgramul citeste un sir de caractere, dintr-o linie de text si\n"
"afiseaza numai carterele de dupa primul spatiu.\n");
printf ("Introduceti un sir de caractere:\n");
gets(s); /* citeste un sir de caractere pana cand se tasteaza '\n' */
/* se determina primul spatiu sau sfarsit de sir */
if ( s[0] )
for ( i = 0 ; s[i] && s[i] != ' '; i++);
ptrc = &s[i+1];
printf("\nSirul de caractere de dupa primul spatiu:\n");
printf ("%s\n",ptrc); /* sau puts (ptrc), tipareste sirul de dupa primul blanc */
else
printf("Sir vid de caractere.\n");
40. Programul calculeaza suma elementelor de pe diagonala principala a
unei matrici, utilizand pentru adresarea elementelor matricii un pointer,
initializat pentru fiecare linie, cu adresa de inceput a liniei respective.
#include <stdio.h>
#include <conio.h>
void main()
{ int vect[10][10];
int suma = 0, *ptr, n, i, j;
clrscr();
printf ("Programul calculeaza suma elementelor de pe diagonala principala\n"
"utilizand pentru adresare un pointer initializat la fiecare\n");
printf("ciclu cu adresa de inceput a liniei respective\n");
printf ("Dimensiune matrice(patrata):");
scanf ("%d", &n);
for ( i = 0 ; i < n ; i++)
for ( j = 0 ; j < n ; j++)
printf ("vect[%d][%d]=", i+1, j+1);
scanf ("%d", &vect[i][j]);
for ( i = 0 ; i < n ; i++)
{ ptr = vect[i];
suma += *(ptr+i);
printf ("Suma= %d \n", suma);
41. Programul afiseaza zilele saptamanii, dintr-un tablou de
pointeri la siruri de caractere (zilele sapamanii)
#include <stdio.h>
main()
{ int i; /* se defineste variabila I de tip intreg */
char *zile[] = {"Luni", "Marti", "Miercuri", "Joi", "Vineri",
"Sambata","Duminica"}; /* tiparim zilele saptamanii */
printf("\nProgramul afiseaza zilele saptamanii, dintr-un tablou de\n"
"pointeri la siruri de caractere (zilele saptamanii):\n");
for ( i = 0 ; i < 7 ; i++ )
printf("%-10s",zile[i]);
printf("\n");
42. Program - exemplu de alocare dinamica de memorie; se aloca dinamic
memorie pentru 40 de valori intregi, care sunt apoi initializate,
tiparite, dupa care se elibereaza memoria alocata
#include <stdio.h>
#include <stdlib.h> /* sau alloc.h */
main( )
{ int *ptr, val; /* se defines variabilele ptr si valoare de tip intreg */
ptr = (int*) malloc (40*sizeof (int) );
printf("\nProgramul aloca dinamic memorie pentru 40 de valori intregi,\n"
"care sunt apoi initializate si tiparite,\n"
"dupa care se elibereaza memoria alocata:\n");
if (!ptr) /*testam daca s-a alocat memorie */
printf ("Memorie plina! Eroare de alocare! \n");
else
{ for ( val = 0 ; val < 40 ;++val )
*(ptr + val) = val + 1;
for ( val = 0 ; val < 40 ; ++val)
printf ("%4d", *(ptr + val) );
free ( ptr);
printf("\n\n"); } }
43. Programul copiaza un sir de la sursa la destinatie, utilizand pentru copiere
pointeri
#include <stdio.h>
void main ( )
{ char sir_sursa []= {"Acesta este sirul de copiat"};
char sir_dest[50];
char *de_la , *catre ;
printf("\nProgramul copiaza un sir de la sursa la destinatie,\n"
"utilizand un pointer. Sirul de copiat este:\n");
printf("\"%s\"\n",sir_sursa);
de_la = sir_sursa;
catre = sir_dest;
while ( *de_la ) /* sau for (;*de_la!='\0';++de_la,++catre) */
* catre ++ = *de_la++; /* *catre = +de_la; */
* catre = '\0'; /* *catre ='\0'; */
printf ("Sirul destinatie (copiat) este : \"%s\"\n", sir_dest);
44. Programul insumeaza elementele unui vector utilizand un pointer
pentru a referi elementele vectorului
#include <stdio.h>
void main ( )
{
int valori [10] = { 3,7, -9, 5, 18, 35, -11, 100, -225, 77 };
int sum = 0 , * ptr ;
printf("\nProgramul insumeaza elementele unui vector utilizand un pointer\n"
"pentru a referi elementele vectorului.\n");
int * ptr_sfarsit = valori + 10 ;
printf("Valorile componentelor vectorului sunt:\n");
for ( ptr = valori ; ptr < ptr_sfarsit ; ++ ptr )
printf("%5d",*ptr);
sum += *ptr ;
printf ("\nSuma valorilor este: %i.\n" , sum ) ;
45. Exemplu utilizare functi in C
#include <iostream.h>
void citeste_valori(int sir[], int numar_de_elemente) /* aceasta functie citeste un sir
de "numar_de_elemente" valori de tip intreg */
{ int i;
for (i = 0; i < numar_de_elemente; i++)
{ cout << "Introduceti valoarea " << i+1 << ": ";
cin >> sir[i];
}}
void main(void)
{ int numar[3];
cout << "Programul citeste 3 valori de tip intreg pe care le afiseaza" <<
endl;
citeste_valori(numar, 3); /* se citeste un vector de 3 valori intregi */
cout << "Valorile sirului sunt:" << endl;
for (int i = 0; i < 3; i++) /* dupa care se tiparesc */
cout << "val(" << i+1 << ")=" << numar[i] << endl; }
46. Programul realizeaza suma elementelor unui tablou, utilizand
o functie de parametru formal tablou
# include <stdio.h>
# define size 100
double suma(double [], int);
main()
double tablou[size], suma_elemente, elem;
int nr_elem, i;
printf("\nProgramul calculeaza suma elementelor unei matrici, utilizand "
"o functie,\ncare refera elementele tabloului.\n");
printf ("Numarul de elemente din vector:");
scanf ("%d", &nr_elem);
for ( i = 0 ; i < nr_elem ; i++)
printf ("numar(%d)=", i+1);
scanf ("%lf", &elem);
tablou[i] = elem;
suma_elemente = suma(tablou, nr_elem);
printf ("Suma elementelor vectorului este: %lf\n", suma_elemente);
double suma ( double tab[], int n )
int i;
double suma = 0;
for ( i = 0 ; i < n ; i++)
suma += tab[i];
return suma;
47. Programul realizeaza suma elementelor din tablou utilizand
o functie cu parametru formal pointer la tablou
#include <stdio.h>
#define size 100
double suma (double *ptrtab, int n);
main()
double tablou[size], suma_elemente, elem;
int nr_elem, i;
printf("\nProgramul calculeaza suma elementelor unei matrici, utilizand "
"o functie,\ncare refera elementele cu un pointer.\n");
printf ("Numarul de elemente din vector:");
scanf ("%d", &nr_elem);
for ( i = 0 ; i < nr_elem ; i++)
{
printf ("Numar(%d)=", i+1);
scanf ("%lf", &elem);
tablou[i] = elem;
suma_elemente = suma (tablou, nr_elem);
printf ("Suma elementelor vectorului:%lf\n", suma_elemente);
double suma ( double *ptab, int n)
int i;
double sum = 0;
for ( i = 0 ; i < n ; i++)
sum += *(ptab + i);
return sum;
48. Programul exemplifica operatori la nivel de bit; se utilizeaza
o functie pentru inversarea ultimilor biti dintr-un numar
#include <stdio.h>
#include <conio.h>
int inver_ultim (int numar , int n )
int masca = 0;
int val_bit = 1;
while (n -- > 0 )
{
masca |= val_bit;
val_bit <<= 1;
return ( numar ^ masca );
void main ( void )
int numar, nr_bit;
printf("\nProgramul exemplifica utilizarea operatorilor la nivel de bit.\n");
printf ("Numarul caruia i se vor inversea ultimii 'n' biti este:");
scanf ("%d", &numar );
printf("Numarul de biti de inversat (n) : ");
scanf("%d", &nr_bit);
printf("Numarul cu ultimii %d biti inversati este: %d\n", nr_bit,
inver_ultim (numar, nr_bit ) );
getch();
49. Program ce citeste un numar (si cu parte fractionara) intr-o baza
oarecare, cuprinsa intre 2 si 10 facandu-i apoi conversia in zecimal
#include <stdio.h>
void main()
{ const char blanc = ' ', punct = '.', plus = '+', minus = '-';
char semn, car;
double valoare;
int p_subunitar, baza;
printf ("\nBaza=");
scanf ("%d", &baza); while ( getchar() != '\n' );
printf ("\nIntroduceti numarul\n");
car = blanc;
while (car == blanc)
scanf("%c", &car);
semn = '+';
if (car == plus || car == minus)
{ semn = car;
scanf ("%c", &car); };
valoare = 0;
while(car >= '0' && car < ('0'+baza))
{ valoare = valoare*baza + car - '0';
scanf("%c", &car); }
if (car == punct)
{ p_subunitar = 0;
scanf("%c", &car);
while(car >= '0' && car < ('0'+baza))
{ valoare = valoare*baza + car - '0';
scanf("%c", &car);
p_subunitar++;
while (p_subunitar > 0)
valoare /= baza;
p_subunitar--; }
}
if (semn == minus)
valoare = -valoare;
printf("Valoarea zecimala este:%f\n", valoare);
50. Programul inverseaza tipul de caractere dintr-un text: de la litera mare la
litera mica si invers
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define LIMITA 30
#define DIMENS 81
main()
void transforma ( char linie[] );
char text [LIMITA] [DIMENS];
int nr_linie =0 , i;
printf("\nProgramul inverseaza tipul de litere dintr-un text.\n");
printf ("Introduceti cel mult %d linii pentru transformare.\n", LIMITA);
printf ("Introducerea se termina cu ENTER, pe o linie noua.\n");
while ( nr_linie < LIMITA && gets(text[nr_linie]) != NULL &&
strcmp ( text[nr_linie], "") !=0 )
nr_linie ++;
for ( i = 0 ; i < nr_linie ; i++)
transforma ( text[i] );
puts ( text[i] );
void transforma ( char *ptr_car )
while ( *ptr_car != '\0' )
if ( isupper ( *ptr_car ) )
*ptr_car = tolower ( *ptr_car );
else if ( islower ( *ptr_car ) )
*ptr_car = toupper ( *ptr_car );
ptr_car++;