Exercices de programmation en langage C (débutant)
Pour l'ensemble des exercices, écrire l'algorithme en pseudo-code avant de coder la solution en langage C.
Vous pouvez utiliser Scratch pour écrire le pseudo code.
Exercice 1
Demander à l’utilisateur deux nombres entiers, les mémoriser
dans deux variables, multiplier leurs valeurs en affectant
le résultat à une troisième variable, puis l’afficher.
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main() {
short nb1, nb2, resultat; // Entiers : nb1, nb2, resultat
printf("Produit de deux entiers\n"); // Afficher : "Produit de deux entiers"
printf("Entrez un nombre entier : "); // Afficher : "Entrez un nombre entier : "
scanf("%hd", &nb1); // Entrer : nb1 (Remarque : utiliser le spécificateur %hd pour le type short)
printf("Entrez un deuxieme nombre entier : "); // Afficher : "Entrez un deuxieme nombre entier : "
scanf("%hd", &nb2); // Entrer : nb2
resultat = nb1 * nb2; // resultat <-- nb1 * nb2;
printf("\n%d x %hd = %d\n", nb1, nb2, resultat); // Afficher : "nb1 x nb2 = resultat"
return 0;
}
Exercice 2
Même chose que l'exercice 1 avec la division à la place de la multiplication.
Vérifier que le 2ème nombre est différent de zéro, sinon afficher "Erreur : division par 0 !".
Voir l'aide
PSEUDO CODE :
VARIABLES :
Entiers : nb1, nb2, resultat
DÉBUT :
Afficher "Division de deux entiers"
Afficher : "Entrez un nombre entier : "
Entrer : nb1
Afficher : "Entrez un deuxieme nombre entier : "
Entrer : nb2
SI nb ≠ 0
resultat = nb1 / nb2;
Afficher : "nb1 / nb2 = resultat"
SINON
Afficher : "Erreur : division par 0 !"
FIN_SI
FIN
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main()
{
int nb1, nb2, resultat; // Entiers : nb1, nb2, resultat
printf("Division (entière) de deux entiers\n"); // Afficher : "Division (entière) de deux entiers"
printf("Entrez un nombre entier : "); // Afficher : "Entrez un nombre entier : "
scanf("%d", &nb1); // Entrer : nb1
printf("Entrez un deuxième nombre entier : "); // Afficher : "Entrez un deuxieme nombre entier : "
scanf("%d", &nb2); // Entrer : nb2
if(nb2 != 0) { // Si(nb != 0)
resultat = nb1 / nb2; // resultat <-- nb1 / nb2;
printf("\n%d / %d = %d\n", nb1, nb2, resultat); // Afficher : "nb1 / nb2 = resultat"
}
else { // Sinon
printf("\nErreur : division par 0 !\n"); // Afficher : "Erreur : division par 0 !"
}
return 0;
}
Exercice 3
Demander à l’utilisateur de saisir un nombre entier.
Afficher si ce nombre est pair ou impair (le reste de la division entière de ce nombre par deux égal à 0 ou non).
Pour obtenir le reste d'une division, on utilise l'opérateur "Modulo". En langage C l'opérateur Modulo est représenté par le symbole % :
int a = 14;
int b = 5;
int reste = a % b; // suite à cette opération, reste = 4 (14/5 = 2 et il reste 4)
Voir l'aide
PSEUDO CODE :
VARIABLES :
Entier : nb
DÉBUT :
Afficher : "Pair ou impair ?"
Afficher : "Entrez un nombre entier : "
Entrer : nb
SI nb % 2 = 0
Afficher : "nb est pair"
SINON
Afficher : "nb est impair"
FIN_SI
FIN
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main()
{
int nb; // Entier : nb
printf("Pair ou impair ?\n"); // Afficher : "Pair ou impair ?"
printf("Entrez un nombre entier : "); // Afficher : "Entrez un nombre entier : "
scanf("%d", &nb); // Entrer : nb
if(nb % 2 == 0) { // Si(nb % 2 = 0)
printf("\n%d est pair\n", nb); // Afficher : "nb est pair"
}
else { // Sinon
printf("\n%d est impair\n", nb); // Afficher : "nb est impair"
}
return 0;
}
Exercice 4
Demander à l'utilisateur 2 nombres entiers et les stocker dans des variables.
Échanger les 2 valeurs des 2 variables et les afficher.
Résultat attendu :
Voir l'aide N°1
Pour échanger les valeurs des variables, il faut une troisième variable pour mémoriser une des valeurs.
Voir l'aide N°2
PSEUDO CODE :
VARIABLES :
Entier : nb1, nb2, temp
DÉBUT :
Afficher : "Echange de variables"
Afficher : "Entrez un premier nombre entier (nb1) : "
Entrer : nb1
Afficher : "Entrez un deuxième nombre entier (nb2) : "
Entrer : nb2
temp <-- nb1
nb1 <-- nb2
nb2 <-- temp
FIN
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main()
{
int nb1, nb2, temp; // Entier : nb1, nb2, temp
printf("\nEchange de variables\n"); // Afficher : "Echange de variables"
printf("\nEntrez un premier nombre entier (nb1) : "); // Afficher : "Entrez un premier nombre entier (nb1) : "
scanf("%d", &nb1); // Entrer : nb1
printf("\nEntrez un deuxième nombre entier (nb2) : "); // Afficher : "Entrez un deuxième nombre entier (nb2) : "
scanf("%d", &nb2); // Entrer : nb2
temp = nb1; // temp <-- nb1
nb1 = nb2; // nb1 <-- nb2
nb2 = temp; // nb2 <-- temp
printf("\nnb1 = %d et nb2 = %d", nb1, nb2); // Afficher : "nb1 et nb2"
return 0;
}
Exercice 5
Demander à l'utilisateur 3 nombres entiers et les stocker dans des variables.
Trier les 3 nombres par ordre croissant en échangeant leurs valeurs si nécessaire.
Afficher les 3 nombres.
Résultat attendu :
Voir l'aide
Tri de 3 variables par ordre croissant :
PSEUDO CODE :
VARIABLES :
Entiers : nb1, nb2, nb3
DÉBUT :
SI nb1 > nb2
Echanger nb1 et nb2
FIN_SI
SI nb2 > nb3
Echanger nb2 et nb3
FIN_SI
SI nb1 > nb2
Echanger nb1 et nb2
FIN_SI
FIN
Comparer le premier nombre avec le deuxième.
Si le premier est plus grand, échanger les deux.
Comparer le deuxième nombre avec le troisième.
Si le deuxième est plus grand, échanger les deux.
Comparer à nouveau le premier et le deuxième nombre (après l'éventuel échange précédent).
Si le premier est plus grand, échanger les deux.
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main()
{
// Entier : nb1, nb2, nb3
int nb1, nb2, nb3, temp;
printf("Tri de 3 variables\n"); // Afficher : "Tri croissant de 3 variables"
printf("\nEntrez un premier nombre entier (nb1) : "); // Afficher : "Entrez un premier nombre entier (nb1) : "
scanf("%d", &nb1); // Entrer : nb1
printf("\nEntrez un deuxième nombre entier (nb2) : "); // Afficher : "Entrez un deuxième nombre entier (nb2) : "
scanf("%d", &nb2); // Entrer : nb2
printf("\nEntrez un troisième nombre entier (nb3) : "); // Afficher : "Entrez un deuxième nombre entier (nb3) : "
scanf("%d", &nb3); // Entrer : nb3
if(nb1 > nb2) // SI nb1 > nb2
{
temp = nb1; // Echanger nb1 et nb2
nb1 = nb2;
nb2 = temp;
}
if(nb2 > nb3) // SI nb2 > nb3
{
temp = nb2; // Echanger nb2 et nb3
nb2 = nb3;
nb3 = temp;
}
if(nb1 > nb2) // SI nb1 > nb2
{
temp = nb1; // Echanger nb1 et nb2
nb1 = nb2;
nb2 = temp;
}
printf("\nnb1 = %d, nb2 = %d et nb3 = %d\n", nb1, nb2, nb3); // Afficher : "nb1, nb2 et nb3"
return 0;
}
Exercice 6
Demander à l’utilisateur combien font 2 fois 2 et répéter cette question aussi longtemps que la
réponse est fausse.
Ajouter le message "Faux, recommencez" à chaque fausse réponse, et "Bravo !" pour la bonne réponse.
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main()
{
int reponse; // Entier : reponse
do { // Faire
printf("Combien font 2 x 2 ? "); // Afficher : "Combien font 2 x 2 ? "
scanf("%d", &reponse); // Entrer : reponse
if(reponse != 4) { // Si(reponse != 4)
printf("\nFaux, recommencez\n"); // Afficher : "Faux, recommencez "
}
} while (reponse != 4); // Tant que (reponse != 4)
printf("\nBravo !\n"); // Afficher : "Bravo !"
return 0;
}
Exercice 7
Amélioration de l'exercice 6 : compter le nombre d'essais et l'afficher à la fin : "Bravo ! Vous avez trouvé en x essais."
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main()
{
int reponse; // Entier : reponse
int nbEssais = 0; // Entier : nbEssais
do { // Faire
printf("Combien font 2 x 2 ? "); // Afficher : "Combien font 2 x 2 ? "
scanf("%d", &reponse); // Entrer : reponse
if(reponse != 4) { // Si(reponse != 4)
printf("\nFaux, recommencez\n"); // Afficher : "Faux, recommencez "
}
nbEssais++; // nbEssais <-- nbEssais + 1
} while (reponse != 4); // Tant que (reponse != 4)
// Afficher : "Bravo ! Vous avez trouvé en nbEssais essais."
printf("\nBravo ! Vous avez trouvé en %d essais.\n", nbEssais);
return 0;
}
Exercice 8
Demander à l’utilisateur un nombre entier positif. Afficher tous les nombres pairs entre 0 et le nombre saisi."
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main() // main désigne le programme principal
{ // Les accolades servent à délimiter les blocs
// Déclaration des variables
int nb; // Je déclare une variable de type ENTIER (integer) dont le nom est nb
printf("Entrez un nombre entier > 0 : "); // Afficher : "Entrer un nombre entier > 0"
scanf("%d", &nb); // Entrer : nb (le %d indique un nombre entier)
//Pour i de 0 à nb par incréments de 2
for(int i = 0; i <= nb; i = i + 2)
{
printf("%d ",i); // Afficher : "i "
}
}
Exercice 9
Demander à l’utilisateur de saisir des notes (entre 0 et 20) et lui expliquer qu’une valeur hors de cet intervalle arrêtera la saisie.
Compter les notes saisies. Une fois la saisie terminée, afficher le nombre de notes saisies.
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main() {
int nbNotes; // Entier : nbNotes
float note; // Réels : note
// Afficher : Entrez des notes (entre 0 et 20)
// Afficher : Pour stopper, saisir une note hors de cet intervalle.
printf("Entrez des notes (entre 0 et 20)\nPour stopper, saisir une note hors de cet intervalle.\n");
nbNotes = 0; // nbNotes <-- 0
do { // Faire
scanf("%f", ¬e); // Entrer : note
nbNotes++; // nbNotes <-- nbNotes + 1
} while((note >= 0) && (note <= 20)); // Tant que (note >= 0) ET (note <= 20)
nbNotes--; // La dernière note ne compte pas (en dehors de l'intervalle 0 - 20)
if(nbNotes > 0) { // Si(nbNotes > 0)
// Afficher : Vous avez saisi nbNotes note(s)
printf("Vous avez saisi %d note(s)\n", nbNotes);
}
else { // Sinon
// Afficher : ERREUR : Vous n'avez pas saisi de note.
printf("ERREUR : Vous n'avez pas saisi de note.\n");
}
return 0;
}
Exercice 10
Même chose que l'exercice 9, mais en calculant – au fur et à mesure – la somme des notes.
A la fin, calculer et afficher la moyenne, ou un message d’erreur si aucune note n’a été saisie.
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main() {
int nbNotes; // Entier : nbNotes
float note, sommeDesNotes; // Réels : note, sommeDesNotes
// Afficher : Entrez des notes (entre 0 et 20)
// Afficher : Pour stopper, saisir une note hors de cet intervalle.
printf("Entrez des notes (entre 0 et 20)\nPour stopper, saisir une note hors de cet intervalle.\n");
nbNotes = 0; // nbNotes <-- 0
sommeDesNotes = 0; // sommeDesNotes <-- 0
do { // Faire
scanf("%f", ¬e); // Entrer : note
nbNotes++; // nbNotes <-- nbNotes + 1
sommeDesNotes = sommeDesNotes + note; // sommeDesNotes <-- sommeDesNotes + note
} while((note >= 0) && (note <= 20)); // Tant que (note >= 0) ET (note <= 20)
nbNotes--; // La dernière note ne compte pas (en dehors de l'intervalle 0 - 20)
sommeDesNotes = sommeDesNotes - note; // La dernière note ne compte pas
if(nbNotes > 0) { // Si(nbNotes > 0)
// Afficher : Vous avez saisi nbNotes note(s)
printf("Vous avez saisi %d note(s)\n", nbNotes);
printf("La moyenne des notes est : %.2f\n", sommeDesNotes / nbNotes);
}
else { // Sinon
// Afficher : ERREUR : Vous n'avez pas saisi de note.
printf("ERREUR : Vous n'avez pas saisi de note.\n");
}
return 0;
}
Exercice 11
Prix TTC. Demander le prix unitaire HT et le nombre d’exemplaires.
Calculer et afficher le prix total HT, la TVA et le prix total (TTC) à payer.
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main()
{
const float TAUX_TVA = 0.2; // TVA à 20%
float prixUnitaireHT;
int nb;
printf("Prix TTC\n");
printf("\nSaisir le prix HT : ");
scanf("%f", &prixUnitaireHT);
printf("Saisir le nombre d'exemplaires : ");
scanf("%d", &nb);
printf("\nPrix Total HT : \t%.2f", prixUnitaireHT * nb);
printf("\nPrix TVA : \t\t%.2f", prixUnitaireHT * nb * TAUX_TVA);
printf("\nPrix Total TTC : \t%.2f\n", prixUnitaireHT * nb * (1 + TAUX_TVA));
return 0;
}
Exercice 12
Même chose que l'exercice 10, mais en mémorisant la note la plus basse et la note la plus haute.
A la fin, afficher ces deux notes ainsi que la moyenne tronquée (moyenne ne tenant pas compte des valeurs extrêmes : dans notre cas la note la plus basse et la note la plus haute), ou un message d’erreur si aucune note n’a été saisie.
Voir le corrigé
#include <stdio.h> // Inclure la bibliothèque STanDard Input Output
// permet d'utiliser, entre autre, printf et scanf
int main() {
int nbNotes; // Entier : nbNotes
float note, sommeDesNotes, noteMin, noteMax; // Réels : note, sommeDesNotes, noteMin, noteMax
// Afficher : Entrez des notes (entre 0 et 20)
// Afficher : Pour stopper, saisir une note hors de cet intervalle.
printf("Entrez des notes (entre 0 et 20)\nPour stopper, saisir une note hors de cet intervalle.\n");
nbNotes = 0; // nbNotes <-- 0
sommeDesNotes = 0; // sommeDesNotes <-- 0
noteMax = 0;
noteMin = 20;
do { // Faire
scanf("%f", ¬e); // Entrer : note
nbNotes++; // nbNotes <-- nbNotes + 1
sommeDesNotes = sommeDesNotes + note; // sommeDesNotes <-- sommeDesNotes + note
if((note > noteMax) && (note <= 20)) noteMax = note;
if((note < noteMin) && (note >= 0)) noteMin = note;
} while((note >= 0) && (note <= 20)); // Tant que (note >= 0) ET (note <= 20)
nbNotes--; // La dernière note ne compte pas (en dehors de l'intervalle 0 - 20)
sommeDesNotes = sommeDesNotes - note; // La dernière note ne compte pas
if(nbNotes > 0) { // Si(nbNotes > 0)
// Afficher : Vous avez saisi nbNotes note(s)
printf("Vous avez saisi %d note(s)\n", nbNotes);
printf("La note la plus basse est : %.2f\n", noteMin);
printf("La note la plus haute est : %.2f\n", noteMax);
printf("La moyenne des notes est : %.2f\n", sommeDesNotes / nbNotes);
printf("La moyenne tronquée est : %.2f\n", (sommeDesNotes - noteMin - noteMax) / (nbNotes - 2));
}
else { // Sinon
// Afficher : ERREUR : Vous n'avez pas saisi de note.
printf("ERREUR : Vous n'avez pas saisi de note.\n");
}
return 0;
}
Articles connexes
Vous avez apprécié cet article ? Partagez le !