Auteur : SD
Créé le : 11-12-2020
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, 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() {
int 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("%d", &nb1); // Entrer : nb1
printf("Entrez un deuxieme nombre entier : "); // Afficher : "Entrez un deuxieme nombre entier : "
scanf("%d", &nb2); // Entrer : nb2
resultat = nb1 * nb2; // resultat <-- nb1 * nb2;
printf("\n%d x %d = %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 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"); // Division : "Produit 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 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 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 5
Amélioration de l'exercice 4 : 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 6
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 7
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 8
Même chose que l'exercice 7, 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 9
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 10
Même chose que l'exercice 8, 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 !