Documente Academic
Documente Profesional
Documente Cultură
1. Funcțiile scanf/printf în C
În limbajul C, nu există instrucțiuni de intrare/ieșire (citire/scriere) pentru a mări portabilitatea
limbajului. Pentru a realiza citiri și scrieri se apelează funcții de intrare/ieșire din bibliotecile
mediului de programare. Pentru operații de citire a datelor și de afișare a rezultatelor sunt definite
funcții standard, declarate în fișierul antet sdtio.h . Un fișier text este un fișier care conține numai
caractere ASCII grupate în linii (de lungimi diferite), fiecare linie terminată cu un terminator de
linie format din unul sau două caractere. În sistemele Windows se folosesc două caractere ca
terminator de linie: \n - newline (trecere la linie nouă) și \r-return (trecere la început de linie).
Funcțiile intrare/ieșire (input/output) din C pot fi grupate în câteva familii:
Un programator trebuie să asigure concordanța dintre descriptori de format și tipul variabilelor sau
expresiilor care urmează argumentul, deoarece funcțiile scanf și printf nu fac nicio verificare și nu
semnalează neconcordanțe. Exemplele următoare trec de compilare, dar primești avertisment pentru
utilizarea incorectă a specificatorilor de format și afișează incorect valorile variabilelor :
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=3;
float b=3.14;
printf("%f \n ",a); ///afișează 0.00000
printf("%d \n ",b); ///afișează 1610612736
return 0;
}
Între caracterul ‚%’ și literele care desemnează tipul valorilor scrise mai pot apărea :
a) Un caracter ce exprimă anumite opțiuni de scriere :
-(minus): aliniere la stânga în câmpul de lungime specificată
+(plus): se afișează și semnul ‚+’ pentru numere pozitive
0:numerele se completează la stânga cu zerouri pe lungime X
#:formă alternativă de scriere pentru numere
b) Un număr întreg X ce arată lungimea câmpului pe care se scrie o valoare sau caracterul *
dacă lungimea câmpului se dă într-o variabilă de tip int care precede variabila a cărei valoare
se scrie.
c) Punct urmat de un întreg, care arată precizia cu care se scriu numerele neîntregi.
d) Una din literele ‚h’ ‚l’ care modifică lungimea tipului numeric.
Exemplu de utilizare a opțiunii ‚0’
#include <stdio.h>
#include <stdlib.h>
int main()
{int ora=9, min=7, sec=30;
printf ("%02d:%02d:%02d\n",ora, min, sec); /// scrie 09:07:30
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{char c[2]; /// memorie pentru un caracter și pentru terminator de șir
scanf ("%1s",c); /// citește șir de lungime 1
return 0;
}
return 0;
}
2.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float x, r1, r2, EPS = 0.001;
scanf("%f", &x);
r1 = r2 = x / 2 ;
do
{r1 = r2;
r2 = ( r1 + x/r1 ) / 2;
} while ( fabs( r1 - r2 )>EPS);
printf("rad(%2.0f) = %.3f | %.3f \n", x, r2, sqrt(x));
for(int i = 1; i <= 50; i++)
printf("rad(%d) = %.3f\n", 2 * i, sqrt(2 * i));
return 0;
}
// Acest program afișează radicalul numerelor cuprinse în intervalul [1,100] cu 3 zecimale după virgulă