Vous êtes sur la page 1sur 67

Langage de Programmation: I

- Le Langage C Partie I

E SAAD
Histoire du C

 Origines
C a trois anctres : les langages CPL, BCPL et B.

CPL : (pour Combined Programming Language) a t conu au dbut des


annes 1960 - universits de Cambridge et de Londres. Fortement typ
mais trop complexe  disparition dans las anne 70

BCPL : (pour Basic CPL) Cambridge en 1966 par Martin Richards. Version
siplifie  Ecriture dun 1er Compilateur et de divers systmes
dexploitations

B : Ken Thompson vers 1970 dans les laboratoires Bell  Version simplifie
du BCPL
Histoire du C

C: dvelopp par un collgue de Ken Thompson, Dennis Ritchie qui ajouta les
tableaux, les pointeurs, les nombres virgule flottante, les structures...
1972 fut l'anne de dveloppement la plus productive et sans doute l'anne
de baptme de C. En 1973, C fut suffisamment au point pour que 90% de
UNIX puisse tre rcrit avec.

- Une 1re dfinition du langage est apparue en 1978 avec louvrage de


Ritchie et Kernighan The C programming language .

- Son succs international a contribu sa normalisation:


1- ANSI (American National Standard Institute
2- ISO (International Standadization Organisation
3- CEN (Comit Europen de Normalisation) en 1993
1. Introduction au langage C

- Le langage C est un langage de bas niveaux, dans le sens o il permet la


manipulation de donnes que manipulent les ordinateurs (Bit, octet, adresse)
Langages volus (Pascal, Fortran, ADA)

- Il est suffisamment gnral pour permettre de dvelopper des application de


type scientifique ou de gestion base sur laccs aux bases de donnes (Word
et Excel sont crits partir de C ou C++)

- Il est un des 1ers langages offrant des possibilits de programmation modulaire:


Un programme peut tre constitu de plusieurs module (module = fichier .c)
1. Introduction au langage C
Quest ce quun programme C?

Cest un texte crit avec un diteur de texte, respectant une certaine syntaxe et
stock sous forme d'un ou plusieurs fichiers (gnralement avec l'extension .c). A
l'oppos du langage assembleur, les instructions du langage C sont obligatoirement
encapsules dans des fonctions et il existe une fonction privilgie appele main qui
est le point de dpart de tout programme.

Exemple: main()
{
printf(Bonjour!);
}

Source.c
Compilation Objet.o Edition des liens Excutable
2. lments de base
2.1 les fichiers include

Exemple:
# include <stdio.h>
main()
{
printf(Bonjour!);
}

La directive #include inclu le fichier stdio.h au programme avant la compilation (pour


pouvoir utiliser la fonction prdfinie printf.

On parle alors de prproceseur


2. lments de base
2.2 les Commentaires

Exemple:
# include <stdio.h> //pour pouvoir utiliser la fonction printf
main()
{
printf(Bonjour!);
}
/*Ce programme imprime la chaine de
caractre Bonjour! lcran*/
2. lments de base
2.4 Les identificateurs

Les identificateurs servent dsigner les diffrents objets manipuls par le


programme:Variables, fonctions,

- Commence ncessairement par une lettre


- une lettre majuscule est tenue pour diffrente de la lettre minuscule correspondante;
- Au plus 31 caractre
- Le caractre _ (appel blanc soulign ) est considr comme une lettre ; il peut
donc figurer n'importe quelle place dans un identificateur: _Total2, Prix_unit
2. lments de base
2.5 Les Types dans C

Les types de base du langage C se rpartissent en 3 grande catgories en fonction


de la nature des informations quils permettent de reprsenter:

 Nombres entiers (int)

 Nombres flottants (float ou double)

 Caractre (char): apparat en C comme un cas particulier de int.

Ils peuvent tre signs ou non signs : signed ou unsigned (unsigned int x;)
2. lments de base
a. Les Types Entiers

 short int ou short (entier sur 16 bits : - 32 768 32 767)


 int (entier sur 32 bits : - 2 147 483 648 2 147 483 647)

 long int ou long (entier sur 32 bits ou 64 bits, selon les machines)

Chacun des 3 peut tre nuanc par lutilisation du qualificatif unsigned pour ne

reprsenter que des nombres positifs:

Exemple: unsigned short x; x peut aller de 0 65 535

pas de bit rserv pour le signe

- C accepte les constantes entire en notation dcimale, hexadcimale ou octale


2. lments de base
b. Les Types Flottants

Float : cod sur 4 octets avec 1 bit de signe, 23 bits de mantisse et 8 bits
d'exposant
Double : cod sur 8 octets avec 1 bit de signe, 52 bits de mantisse et 11
bits d'exposant
Long : cod sur 10 octets avec 1 bit de signe, 64 bits de mantisse et 15 bits
d'exposant

- C accepte les constantes flottante en notation dcimale ou scientifique

3.5e+3 3500 2.43 -0.38 -.38 4. .27


2. lments de base
c. Le Type Char

En C, un caractre est un entier sign cod sur 1 octet


Notation des constantes caractres : a , $ ..

Important: a a

Il existe des caractres non imprimables, tel que le changement de ligne, de


Tabulation, en voici un tableau rcapitulatif
2. lments de base

NOTATION RESULTAT
\a cloche ou bip (alert ou audible bell)
\b Retour arrire (Backspace)
\f Saut de page (Form Feed)
\n Saut de Ligne (Line Feed)
\r Retour chariot (Carriage Return)
\t Tabulation horizontaLe (HorizontaL Tab)
\v Tabutation verticale (VerticaL Tab)
\\ \
\'
\ ''
\? ?
2. lments de base
A propos du type boolen :

Pas de type boolen en C. Le type boolen est reprsent par un entier. Il se comporte
comme la valeur boolenne vraie si cette valeur entire est non nulle.

Dans un contexte qui exige une valeur boolenne (comme les tests, par exemple), un
entier non nul quivaut vrai et la valeur zero quivaut faux
2. lments de base
2.6 Les Mots rservs

Les mots suivants sont rservs. Leur fonction est prvue par la syntaxe de C et ils ne
peuvent pas tre utiliss dans un autre but :

auto break case char const continue default do

double else enum extern float for goto if

int long register return short signed sizeof static

struct switch typedef union unsigned void volatile while


3. Les Variables
3.1 Declaration

Type identificateur = expression

Exemple: int x, y=0, z;


4. Oprateurs et Expressions
C dispose d'un important ventail d'oprateurs originaux d'affectation et
d'incrmentation.

4.1 Oprateurs arithmtiques en C

 Comme tous les langages, C dispose d'oprateurs classiques "binaires" ,


savoir l'addition (+), la soustraction (-), la multiplication (*) et la division (/), ainsi
que d'un oprateur "unaire" correspondant l'oppos not - (comme dans -n ou
-x+y).

 Les oprateurs binaires ne sont priori dfinis que pour deux oprandes ayant
le mme type parmi: int, long int, float, double, long double et ils fournissent
un rsultat de mme type que leurs oprandes.
4. Oprateurs et Expressions
4.1 Oprateurs arithmtiques en C

 De plus, il existe un oprateur de "modulo" not % qui ne peut porter que sur
des entiers et qui fournit le reste de la division de son premier oprande par son
second. Par exemple, 11%4 vaut 3, 23%6 vaut 5

 Remarque: le quotient de deux entiers fournit un entier. Ainsi 5/2 vaut 2; en


revanche, le quotient de deux flottants (not, lui aussi, /) est bien un flottant
(5.0/2.0 vaut bien approximativement 2.5).

Priorit des oprateurs :


les rgles sont "naturelles" et rejoignent celles de l'algbre traditionnelle
4. Oprateurs et Expressions

Conversions implicites :

 On peut crire des expressions mixtes dans lesquelles interviennent des oprandes
de types diffrents:
Int n,p; float x; n*x + p
(int * float) + int
Conversion implicite: int  float ( float*float) + int
float + int
Mme mcanisme : float + float  float

On parle de conversion dajustement de type: intlongfloatdoublelong double


4. Oprateurs et Expressions

Promotions numriques :

 On a vu que les oprateurs numriques ne sont pas dfinis pour le types char et
short :

C prvoit que toute valeur char ou short soit dabord convertie en int.
short n,p; float x; n*x + p
(short * float) + short
Conversion systmatique: ( int * float) + int
Conversion implicite : float * float + int
float + float  float
4. Oprateurs et Expressions
4.2 Oprateurs Relationnels

Comme tout langage, C permet de "comparer" des expressions l'aide


d'oprateurs classiques de comparaison. exemple : 2*a > b +5

Par contre, C se distingue de la plupart des autres langages sur deux points:

1-le rsultat de la comparaison est, non pas une valeur "boolenne" (on dit aussi
"logique") prenant l'une des deux valeurs vrai ou faux, mais un entier valant:
 0 si le rsultat de la comparaison est faux,
 1 si le rsultat de la comparaison est vrai.
Ainsi, la comparaison ci-dessus devient en fait une expression de type entier. Cela
signifie qu'elle pourra ventuellement intervenir dans des calculs arithmtiques;
4. Oprateurs et Expressions
4.2 Oprateurs Relationnels

2-les expressions compares pourront tre de type quelconque et seront soumises au


rgles de conversion prsentes prcdemment.

Liste des oprateurs: < <= > >= == !=


mme priorit > mme priorit

Exemple: a < b == c < d  (a < b) == (c < d)

Remarque: les oprateurs relationnels sont moins prioritaires que les oprateurs
arithmtiques ( x+y < a+2  (x+y) < (a+2) )
4. Oprateurs et Expressions
4.3 Oprateurs Logiques

 C dispose de trois oprateurs logiques classiques: et (not &&), ou (not | |) et


non (not ! ). Par exemple: (a<b) && (c<d) prend la valeur 1 (vrai) si les deux
expressions a<b et c<d sont toutes deux vraies ( de valeur 1), la valeur 0 (faux)
dans le cas contraire.

 Ces oprateurs acceptent n'importe quel oprande numrique, y compris les


types flottants, avec les rgles de conversion implicite dj rencontres.
condition de considrer que:
 0 correspond faux,
 toute valeur non nulle correspond vrai
4. Oprateurs et Expressions
4.3 Oprateurs Logiques

Exemples:
n et p sont des entiers, le compilateur accepte des expression telles que:
n && p n||p if ( !n )  if (n == 0)

Remarque1: loprateur ! a une priorit suprieur celle de tous ls oprateurs


arithmtiques et relationnels. La ngation de a==b serait !(a==b) et non
!a==b
Ne sera value que si a<b
est vrai
Remarque2: loprateur | | est moins prioritaire que &&. Tous deux sont de priorit
infrieure aux oprateurs arithmtique et relationnels
a<b && c<d quivaut (a<b) && (c<d)
4. Oprateurs et Expressions
4.4 Oprateur daffectation ordinaire

 Nous avons dj eu l'occasion de remarquer que : i = 5 tait une expression qui


ralisait une action : l'affectation de la valeur 5 i. Cet oprateur d'affectation (=)
peut faire intervenir d'autres expressions comme dans : c=b + 3

 Cet oprateur possde une associativit de droite gauche : i = j = 5


4. Oprateurs et Expressions
4.5 Oprateurs dincrmentation et de dcrmentation ( ++ -- )

 ++ i : expression qui incrmente de 1 la valeur de i, et sa valeur est celle de i


aprs incrmentation

 si la valeur de i est 5, l'expression : n = ++i - 5 affectera i la valeur 6 et n la


valeur 1.
 n = i++ - 5 (n==0 , i++ vaut 5, i vaut 6)

 On dit que ++ est:


-un oprateur de pr incrmentation lorsqu'il est plac gauche
-un oprateur de post incrmentation lorsqu'il est plac droite
4. Oprateurs et Expressions
4.5 Oprateurs dincrmentation et de dcrmentation ( ++ -- )

Priorit:

3 * i++ * j-- + k++ quivaut 3 * (i++) * (j--) + (k++)

La priorit leve de ces oprateurs unaires permet dcrire des expression


assez compliques sans quil soit ncessaire demployer des ( )

4.6 Oprateurs daffectation largie:


i=i+k  i+=k a=a*b  a*=b i=i-k  i-=k a=a/b  a/=b
4. Oprateurs et Expressions
4.7 Loprateur de CAST :

Exemple: n=10, p=3;


(double) (n/p) aura comme valeur 3
(double) n/p aura comme valeur 3.33333

4.8 Loprateur conditionnel : (seul oprateur ternaire en C)


syntaxe : condition ? Valeur si vrai : valeur si faux
z = (x=y) ? a : b ; on utilise la valeur de lexpression
a>b ? i++ : i-- ; la valeur de lexpression nest pas utilise
4. Oprateurs et Expressions

EXERCICES
5. Les Entes-Sorties Conversationnelles

 Quelles sont les critures autoriss pour des nombres fournis en donnes? Que se

passe-t-il lorsque lutilisateur ne les respecte pas?

 Comment organiser les donnes lorsque lon mlange les types numriques et les

types caractres?

 Que se passe-t-il lorsque, en rponse scanf, on fournit trop ou peu

dinformations?

 Comment agir sur la prsentation des informations lcran?


5.1 Les possibilits de la fonction printf

La fonction printf a comme 1er argument une chane de caractres qui spcifie:

 Des caractres afficher tels quels;


 Des code de format reprs par %. Un code de conversion (c, d, f..)
prcise le type de linformation afficher.

Un code de format peut contenir des informations complmentaires agissant sur le


cadrage, le gabarit ou la prcision.

Exemple: printf("leur somme est : %d",n1+n2);


5.1 Les possibilits de la fonction printf

a. Les principaux codes de conversion:

 c : char: caractre affich ''en clair" (convient aussi short ou int compte tenu

des conversions systmatiques)

 d : int (convient aussi char, compte tenu des conversions systmatiques)

 u : unsigned int (convient aussi unsigned char ou unsigned short, compte tenu

des conversions systmatiques)

 ld : long

 lu : unsigned long
5.1 Les possibilits de la fonction printf

a. Les principaux codes de conversion:

 f : double ou float crit en notation "dcimale" avec six chiffres aprs le point

 e : double ou float crit en notation 'exponentielle'' (mantisse entre 1 et 9) avec six


chiffres aprs le point dcimal, sous la forme x.xxxxxxe+yyy ou x.xxxxxxe-yyy pour
les nombres positifs et -x.xxxxxxe+yyy ou -x.xxxxxxe-yyy pour les nombres
ngatifs

 s : chane de caractres dont on fournit l'adresse (notion qui sera tudie


ultrieurement)
5.1 Les possibilits de la fonction printf

b. Action sur le gabarit daffichage:

Les entiers sont affichs par dfaut sans espaces avant ou aprs. Les flottants avec six
chiffres aprs le point.
Pour agir sur laffichage  un nombre est plac aprs % et prcise le nombre de
caractre minimum utiliser.

Exemples: printf("%3d" , n );
n = 20 ^20
n=3 ^^3
n = 2358 2358
n = -5200 -5200
5.1 Les possibilits de la fonction printf

b. Action sur le gabarit daffichage:

Exemples: printf("%f" , x );
x = 1.2345 1.234500
x = 12.3456789 12.345678

printf("%10f" , x );
x = 1.2345 ^^1.234500
x = 1.2345E5 123450.000000
printf("%e" , x );
x = 1.2345 1.234500e+000
x = 123.45 1.234500e+002
5.1 Les possibilits de la fonction printf
c. Actions sur la prcision :
pour les flottants, on peut prciser un nombre de chiffres aprs le point dcimal

Exemples: printf("%10.3f" , x );
x = 1.2345 ^^^^^1.235
x = 1.2345E3 ^^1234.500
x = 1.2345E7 12345000.000
Remarques:
Cadrage de laffichage gauche  printf("%-10.3f" , x ); x = 1.2345  1.235^^^^^
- Le caractre * figurants la place dun gabarit ou une prcision signifie que la valeur
effective est fournie dans la liste des arguments de printf:
printf("%8.*f" , n, x ); n=1; x=1.2345  ^^^^^1.2
- La fonction printf fournit une valeur de retour (nombre de caractre affichs)
5.1 Les possibilits de la fonction printf
d. Les erreurs de programmation :

Erreur 1 : Code de format en dsaccord avec le type de lexpression afficher:


Consquence : mauvaise interprtation si mme taille (int en %u), sinon, consquences
plus dsastreuses.

Erreur 2: Nombre de code de format diffrents du nombre dexpressions de la liste


Consquence 1 : si des expressions de la liste nont pas de format, elles ne seront pas
affiches ( printf("%d" , n, p ); // valeur de p ne sera pas affich )
Consquence 2 : sil y a trop de code de format, printf cherchera afficher nimporte
quoi ( printf("%d %d" , n ); n=8  8 2 )
5.1 Les possibilits de la fonction scanf

a. Les principaux codes de conversion :

 c : char

 d : int

 u : unsigned int

 hd : short int

 hu : unsigned short

 ld : long

 lu : unsigned long
5.1 Les possibilits de la fonction scanf

a. Les principaux codes de conversion :

 f ou e : float crit en notation "dcimale" ou 'exponentielle''

 Lf ou le : double crit en notation "dcimale" ou 'exponentielle''

 s : chane de caractres dont on fournit l'adresse (notion qui sera tudie


ultrieurement)

b. Premires notion de tampon et de sparateurs :

Lorsque scanf attend des donnes, linformation frappe au clavier est range

temporairement dans lemplacement mmoire nomm tampon . Ce dernier est

explor caractre par caractre au fur et mesure des besoins. Certains caractres

jouent un rle particulier: les sparateurs (lespace et la fin de ligne \n)


5.1 Les possibilits de la fonction scanf

c. Les premires rgles utilises par scanf :

 Les codes de format correspondant un nombre entranent lavancement du


pointeur jusquau 1er caractre diffrent dun sparateur, puis scanf prend en
compte tous les caractres suivants jusqu la rencontre dun sparateur.

 Quand au code de format %c, il entrane la prise en compte du caractre dsign


par le pointeur (mme un sparateur) et il est avanc sur le caractre suivant.
5.1 Les possibilits de la fonction scanf

c. Les premires rgles utilises par scanf :

Exemples : (n et p sont de type int, c char, @ dsigne une fin de ligne)


scanf("%d%d" , &n, &p );
12^25@ n = 12 p=25
^12^^25^^@ n = 12 p=25

123@
@
^25 n = 12 p=25
scanf("%d%c" , &n, &c );
12^a@ n = 12 c=
5.1 Les possibilits de la fonction scanf

d. On peut imposer un gabarit maximal :

Le traitement dun code de format sinterrompe soit la rencontre dun sparateur, soit
lorsque le nombre de caractre indiqu a t atteint !!

Exemples : (n et p sont de type int, @ dsigne une fin de ligne)

scanf("%3d%3d" , &n, &p );


12^25@ n = 12 p=25
^^^^^12345@ n = 123 p=45

12@
25@ n = 12 p=25
5.1 Les possibilits de la fonction scanf

e. Rle dun espace dans le format :

Un espace entre deux codes de format demande scanf de faire avancer le pointeur au
prochain caractre diffrent dun sparateur !!

Exemples : (n et p sont de type int, c char, @ dsigne une fin de ligne)

scanf("%d %c" , &n, &c );


12^a@ n = 12 c=a
12^^^@
a@ n = 12 c=a
5.1 Les possibilits de la fonction scanf

f. Arrt prmatur de scanf :

Compte = scanf("%d %d %c" , &n, &p, &c );


12^25^b@ n = 12 p = 25 c=b compte = 3
12b@ n = 12 p inchang c inchang compte = 1
b@ n indfini p inchang c inchang compte = 0

Un arrt prmatur de scanf a lieu dans le cas o scanf nest pas en mesur de fabriquer
une valeur adquate !!
5.1 Les possibilits de la fonction scanf

f. Problme de synchronisation entre lcran et le clavier :

Examinons cet exemple:


#include <stdio.h>
main()
{ int n, p;
printf("donner une valeur pour n : ");
scanf("%d",&n);
printf("Merci pour %d\n",n);
printf("donner une valeur pour p : ");
scanf("%d",&p);
printf("Merci pour %d\n",p);
} excution
5.1 Les possibilits de la fonction scanf

f. Problme de synchronisation entre lcran et le clavier :


Le tampon nest pas vide chaque nouvel appel de scanf
g. Erreurs de programation :

1- Code de format en dsaccord avec le type de lexpression:


Si mme taille  introduction dune mauvaise valeur
Si la variable a une taille infrieur  crasement dun emplacement mmoire
conscutif cette variable

2- Nombre de codes de format diffrent du nombre dlments de la liste:


Scanf("%d",&n, &p);  seule la valeur de n est lue
Scanf("%d%d",&n);  on affecte une valeur un emplacement alatoire de la
mmoire
Structures conditionnelles

La syntaxe est la suivante :

if (condition ralis
r alise
alis e )
{ liste d'instructions }
else
{ autre srie
s rie d'instructions }

Remarques :
la condition doit tre entre des parenthses
il est possible de dfinir plusieurs conditions remplir avec les
oprateurs ET et OU (&& et ||)
Par exemple l'instruction suivante teste si les deux conditions sont
vraies : if ((condition1)&&(condition2))L'instruction suivante excutera
les instructions si l'une ou l'autre des deux conditions est vraie : if
((condition1)||(condition2))
Les boucles

La syntaxe est la suivante :

for (compteur; condition; modification du compteur)


{ liste d'instructions; }

Par exemple :

for (i=1; i<6; i++)


{
printf("%d", i);
}
L'instruction while

L'instruction while reprsente un autre moyen d'excuter plusieurs fois


la mme srie d'instructions.

La syntaxe de cette expression est la suivante :

while (condition ralis


r alise)
alis e)
{
liste d'instructions;
}
Cette instruction excute la liste d'instructions tant que
(while est un mot anglais qui signifie tant que) la condition est ralise.
Exemples dapplications
#include <stdio.h>
int main()
{
/* declarez le type des variables a et b */
int a;
int b;
int somme;
printf("entrer la val de a :");
/* entrer la valeur de a */
scanf("%d",&a);
printf("entrer la val de b :");
/*entrer la valeur de b*/
scanf("%d",&b);
somme=a+b;
printf("la somme est: %d",somme);
}
EX 1
#include <stdio.h>
int main()
{
printf("la taille de int est: %d\n", sizeof(int));
printf("la taille de float est: %d\n", sizeof(float));
printf("la taille de char est %d\n", sizeof(char));
printf("la taille de double est: %d\n",
sizeof(double));
}
EX 5
#include <stdio.h>
int main()
{
int X1;
int X2;
int X3;
printf("la valeur de X1 est: ");
scanf("%d",&X1);
printf("la valeur de X2 est : ");
scanf("%d", &X2);
X3=X1;
X1=X2;
X2=X3;
printf("la valeur de X1 est: %d\n",X1);
printf("la valeur de X2 est: %d",X2);
}
EX 7
#include <stdio.h>
int main()
{
int n;
int s;
printf("n=");
scanf("%d",&n);
s=n*(n+1)/2;
printf("la somme est : %d",s);
}
EX 2 (sans correction)
 #include <stdio.h>
 int main()
 {
 float c;
 float d=12;
 float p=3.14;
 c=d*p;
 printf("le c est : %f*%f=%f",d,p,c);
 }
EX 3 (not complet)
#include <stdio.h>
int main()
{
int a;
int b;
a=-21430;
b=4782;
printf("la somme est: %d\n", a+b);
printf("la soustraction est: %d\n", a-b);
printf("le produit est: %d\n" ,a*b);
printf("la division est : %d\n", a/b);
printf("la xx est : %d\n", a%b);
}
EX 4 (not correctin)
#include <stdio.h>
int main()
{
float f;
float m;
float a;
float mm;
f=12,75;
m=16;
a=15,5;
mm=((f*3)+(m*7)+(a*1))/11;
printf("la moyenne gnrale est: %f\n", mm);
}
EX 6
#include <stdio.h>
int main()
{
int a;
int b;
int c;
int x;
int s;
printf("la valeur de a est: ");
scanf("%d" ,&a);
printf("la valeur de b est: ");
scanf("%d" ,&b);
printf("la valeur de c est: ");
scanf("%d", &c);
printf("la valeur de x est: ");
scanf("%d", &x);
s=(a*x*x)+(b*x)+c;
printf("la valeur du polynome est: %d",s);
}
EX 2 ?????????
#include <stdio.h>
int main()
{
float c;
float d;
float p;
p=3,14;
printf("d=");
scanf("%f",&d);
c=d*p;
printf("la circonfrence est:%f",c);
}
EX 4 neww
#include <stdio.h>
int main()
{
float f;
float m;
float a;
float mm;
printf("f=");
scanf("%f",&f);
printf("m=");
scanf("%f",&m);
printf("a=");
scanf("%f",&a);
mm=((f*3)+(m*7)+(a*1))/11;
printf("la moyenne gnrale est: %f\n", mm);
}
EX
#include <stdio.h>
int main()
{
int a;
printf("a=");
scanf("%d",&a);
printf("%d\n",a);
printf("%2d\n",a);
printf("%3d\n",a);
printf("%4d\n",a);
printf("%5d\n",a);
}
#include <stdio.h>
int main()
{
int a;
printf("entrer a: ");
scanf("%d",&a);
if(a>0)
{
printf("le nombre est posotif");
}
if(a==0)
{
printf("le nombre est nul");
}
if(a<0)
{printf("le nombre est negatif");
}
}
#include <stdio.h>
int main()
{
int a;
int b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
if(a>b)
{
printf("a est max");
}
if(a<b)
{
printf("b est max");
}
if(a==b)
{
printf("a est egal a b");
}
}
#include <stdio.h>
int main()
{
float a;
float b;
float x;
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
if(a==0 && b==0)
{
printf("la solution est R");
}
if(a==0 && b!=0)
{
printf("la solution esr l'ensemble vide");
}
if(a!=0)
{
printf("la solution est: %f",-(b/a));
}
}
#include <stdio.h>
#include <math.h>
int main()
{
float a;
printf("a=");
scanf("%f",&a);
float racine;
racine = sqrt(a);
printf("la racine de a est :%f",racine);
}
equation deuxim degr
#include <stdio.h>
#include <math.h>
int main()
{
float a;
float b;
float c;
float p;
float delta;
float x;
float x1;
float x2;
float x3;
float racine;
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
delta =(b*b)-(4*a*c);
printf("delta est egal a: %f\n",delta); voir la suite (dispositiv 17)
La suite d l equation 2m degr (dispositive 16)
racine=sqrt(delta);
x1=((-b) + racine)/(2*a);
x2=((-b) - racine)/(2*a);
x3=(-b)/(2*a);
if(delta>0)
{
printf("l'quation admet deux solution:\n");
printf("x1=%f\n",x1);
printf("x2=%f",x2);
}
if(delta<0)
{
printf("l'equation admet aucune solution dans R:\n");
}
if(delta==0)
{
printf("l'equation admet une seule solution :\n");
printf("x3= %f",x3);
}
}