Exercices de Programmation en Langage C
EXERCICES D’ALGORITHMIQUE ET
PROGRAMMATION
Exercice 1 :
Ecrire un programme pour résoudre tout type d’équation du second
degré : ax²+bx+c=0 Avec a0.
Exercice 2 :
Ecrire un programme qui simule une calculatrice additionneuse. On
rentrera dans l’ordre, la première opérande, suivi de l’opérateur et enfin, la
seconde opérande.
Exercice 3 :
Afficher à l’écran tous les diviseurs d’un entier N lu au clavier.
Exercice 4 :
Déterminer le nième (n lu au clavier) terme de la suite définie par :
U0=4 Un=Un-1 + 3
Exercice 5 :
Calculer et afficher le pgcd de 2 entiers a et b lus au clavier par la
méthode d’Euclide :
Si a>b a = bQ + R
Si R = 0 pgcd(a,b) = b sinon pgcd(a,b) = pgcd(b,R).
Exercice 6 :
Ecrire un programme qui affiche à l’écran tous les nombres premiers
compris entre 2 entiers e1 et e2 lus au clavier. Un nombre est premier s’il n’est
divisible que par le nombre 1 et lui même.
Exercice 7 :
Afficher tous les nombres parfaits inférieurs à un nombre entier Nmax lu
au clavier. Un nombre est parfait si la somme de ses diviseurs (excepté le
nombre lui-même) est égale au nombre. Par convention, le nombre 1 est parfait.
Exemple : 6 est parfait, car 1+2+3=6.
Exercice 8 :
Imprimer le 1er terme de la suite de Fibonacci > à N entier lu au clavier.
La suite de Fibonacci est définie par : U0=U1=1 Un+1=Un+Un-1
Exercice 9 :
Professeur : ASSALE Adjé Louis 1/5 INP-HB
Exercices de Programmation en Langage C
Déterminer les nombres amis dont l’un est inférieur à un nombre Nmax lu
au clavier. Deux nombres N et M sont amis si et seulement si :
Σdiviseur de N = M et Σdiviseur de M = N
Exercice 10 :
Calculer et afficher les N (lu au clavier) 1er termes de la suite définie par
U0=1, Ui+1 est égale au plus petit entier strictement supérieur à Ui tel que le
nombre de diviseurs de Ui+1 est strictement supérieur au nombre de diviseurs de
Ui.
Exercice 11 :
Calculer la fréquence d’un couple de lettres (l1, l2) lus au clavier dans une
phrase. La phrase est lue caractère par caractère et se termine par un point. La
fréquence est calculée au fur et à mesure que l’on lit la phrase.
Exercice 12 :
Soit un texte lu à partir du clavier se terminant par le caractère ‘.’
Contenant éventuellement des séparateurs (‘,’, ’ ;’ et ‘ ‘) en nombre quelconque.
Editer les mots du texte à raison de 1 mot par ligne et éditer le nombre de lettres
de chaque mot. Le texte est lu caractère par caractère.
Hypothèse 1 : Il existe un seul séparateur entre 2 mots.
Hypothèse 2 : Il peut exister plusieurs séparateurs entre 2 mots.
Exercice 13 :
Calculer la fréquence de chaque lettre dans une phrase. La phrase est lue
caractère par caractère et se termine par un point (.).
Exercice 14 : Compactage de tableau
Initialiser un tableau de caractères qui peut contenir des caractères
espaces.
Compacter le tableau en supprimant les caractères espaces.
Hypothèse1 : on supprime tous les caractères espaces
Hypothèse2 : si un espace sépare 2 lettres du tableau on le supprime, si plusieurs
espaces on en garde 1.
Exercice 15 : Méthode de PASCAL
On désire calculer CnP à l’aide de la formule Cnp=Cn-1p-1 + Cn-1p en utilisant la
méthode de Pascal :
ligne 0 : 1
ligne 1 : 1 1
ligne 2 : 1 2 1
ligne 3 : 1 3 3 1
Professeur : ASSALE Adjé Louis 2/5 INP-HB
Exercices de Programmation en Langage C
:
ligne n : Cn0 Cn1 Cn2 …Cnn
on lira n et p tel que np et on calculera ensuite les différents Cnp pour chaque
ligne.
Exercice 16 :
Ecrire un programme qui recherche un entier x dans un tableau d’entiers,
qui affiche l’indice du tableau qui correspond à l’entier recherché ou qui affiche
l’information « non trouvé » dans le cas contraire.
Exercice 17 :
Ecrire un programme qui lit un tableau d’entiers et qui l’affiche en ordre
inverse.
Exercice 18 :
Ecrire un programme qui recherche un élément x lu au clavier dans un
tableau déjà trié de N valeurs par la méthode de Dichotomie.
Exercice 19 :
Calculer la valeur d’un polynôme de degré n P(x) = a0 + a1x + … anxn n≥0
en un point x (lu au clavier) par la méthode de Horner. Les coefficients ai et n
sont lus au clavier.
P(x) = a0 + a1x + … anxn = a0 + x(a1 + x(a2 + …+ x(an-1 + x(an +x*0))…))
Exercice 20 :
Un mot est palindrome s’il se lit identiquement de la droite vers la gauche
et de la gauche vers la droite (exemple : elle, laval, ici).
Ecrire une fonction qui teste si une chaîne de caractères est palindrome.
Exercice 21 :
Ecrire un programme qui utilise une fonction longueur pour déterminer la
longueur d’une chaîne de caractères lus au clavier.
Exercice 22 :
Ecrire une fonction comparer qui compare 2 chaînes de caractères s et t, et
retourne –1, 0 ou 1 selon que s est inférieur, égale ou supérieur à t.
Exercice 23 :
Ecrire un programme qui utilise une fonction récursive pour calculer le
premier terme de la suite de Fibonacci > Nmax lu au clavier.
Exercice 24 :
Ecrire un programme qui utilise 3 fonctions :
Professeur : ASSALE Adjé Louis 3/5 INP-HB
Exercices de Programmation en Langage C
- Lire (int *tab, int n) qui lit un tableau de n entiers.
- Trier(int *tab, int n) qui trie un tableau de n entiers selon la méthode de tri
par sélection.
- Afficher(int *tab, int n) qui affiche les éléments du tableau.
Le but du programme est de trier un tableau quelconque saisi au clavier.
Exercice 25 : Fusion de 2 tableaux
Soient 2 tableaux A et B triés de longueur respective m et n. Ecrire une
fonction pour les fusionner en un tableau C trié de longueur m+n.
Exercice 26 :
Soit une suite de nombre qui se termine par 0. Exemple : 22 13 13 13 5 43
22 22 7 7 7 13 13 13 11 0.
a) On désire signaler les successions de nombres identiques en imprimant
le nombre répété de chaque succession. Dans l’exemple précédent, on
imprimera 13 22 7 13. Ecrire l’algorithme nécessaire sachant que la
suite ne doit être lue qu’une fois.
b) On désire maintenant déterminer la succession de nombres identiques
la plus longue et afficher la valeur répétée dans cette succession. Si la
longueur maximale est atteinte par plusieurs successions, on
n’affichera que la valeur et la longueur de la première succession.
c) Maintenant, on veut afficher la valeur et la longueur de chacune des
successions de longueur maximale, à condition toutefois qu’il n’y en
ait pas plus de dix. S’il y a plus de dix, on imprimera les dix premières.
Exercice 27 :
Ecrire un programme qui lit une liste de n étudiants (on saisira le
matricule, le nom, le prénom et l’age de l’étudiant) et qui les affiche dans l’ordre
inverse.
Exercice 28 :
Ecrire un programme qui recopie le contenue du fichier f1 dans le fichier
f2 en insérant le caractère ‘*’ au début de chaque ligne. Les fichiers f1 et f2
seront arguments de la commande.
Exercice 29 :
Ecrire un programme qui calcule l’intégrale d’une fonction quelconque
par la méthode des trapèzes. On définira une fonction somme à laquelle on
passera en argument la fonction dont on veut calculer l’intégrale.
Exercice 30 :
Professeur : ASSALE Adjé Louis 4/5 INP-HB
Exercices de Programmation en Langage C
On considère de nouveau la liste des étudiants de l’exercice 27, mais cette
fois-ci on veut pouvoir sauver la liste des étudiants dans un fichier, lire les
étudiants du fichier, ajouter, rechercher et supprimer des étudiants.
Exercice 31 :
Décrire étape par étape ce que font les programmes suivants :
Déclaration Déclaration
P, Q : *entier Q : *entier
Début Début
Nouveau (P) Nouveau (Q)
P*5 Q*3
QP Libère (Q)
Ecrire (P*, Q*) Nouveau (Q)
PRien QRien
Fin Fin
Déclaration Déclaration
P, Q : *entier P, Q : *entier
Début Début
Nouveau (P) Nouveau (P)
P*8 P*8
QP Nouveau (Q)
Q5 QP
Ecrire (P*, Q*) Libère (P)
Libère (P) Fin
Fin
Exercice 32 :
Ecrire une fonction récursive qui détermine le pgcd de deux entiers a et b
par la méthode d’Euclide.
Et une autre par la méthode dite de la soustraction : pgcd (u, u) = u
Si u>v alors pgcd (u, v) = pgcd (u-v, v) sinon pgcd (u, v) = pgcd (v, u)
Exercice 33:
Ecrire un programme récursif qui lit un mot se terminant par le caractère
espace caractère par caractère et qui l’affiche à l’envers. Par exemple la lecture
de PASCAL doit donner LACSAP.
Exercice 34 : Tour de Hanoï
Ecrire un programme récursif qui permet de transférer n disques (déposés
les uns sur les autres du diamètre le plus grand en bas au diamètre le plus petit)
de la tour x vers la tour y en se servant de la tour z. Un disque ne peut pas être
déposé sur un disque de diamètre inférieur.
Professeur : ASSALE Adjé Louis 5/5 INP-HB