table des matières
Vous trouverez sur cette page les corrections des exercices proposées concernant la maîtrise des fondamentaux du langage C en première année du BTS CIEL-IR.
Les exercices couvrent :
- La manipulation de variables (déclaration, types et affectation)
- La manipulation des Entrées/sorties
- Les structures de contrôle
- Tests et alternatives
- Boucles itératives
- Les fonctions
- Les tableaux
Premier programme C
Squelette général d’un programme en C
Manipulation de variables
Permutation de 2 variables
Écrire un programme permettant d’échanger les valeurs de 2 variables entières a et b
Corrigé de l’exercice
Manipulation des Entrées/sorties
Programme “Age Étudiant”
Écrire un programme qui :
- Demande l’âge de l’utilisateur
- Affiche cet âge à l’écran
Corrigé de l’exercice
Déclarer et afficher
Déclarer des variables avec les valeurs
70
,82
,'c'
et30.56
Afficher le contenu de ces variables :
- Sur une ligne
- Une variable par ligne
Corrigé de l’exercice
La calculatrice 4 opérations
Écrire un programme de calculatrice qui :
- Demande des chiffres à l’utilisateur
- Affiche le résultat des quatre opérations (addition/soustraction/multiplication/division)
Attention : Il n’y a pas de test pour une division par zéro. La division de deux entiers est un entier. Ce programme ne gère pas la conversion de type ni les décimaux.
Corrigé de l’exercice
Par ici la monnaie!
Écrire un programme qui donne le nombre de billets de 50€, 20€ et 10€ à partir d’une somme saisie par l’utilisateur.
Corrigé de l’exercice
Prix TTC
Écrire un programme qui demande le prix HT d’un article ainsi que le nombre d’articles et qui fournit le prix total TTC correspondant.
Corrigé de l’exercice
Conditions et alternatives
Positif?
Écrire un programme qui :
- Demande une variable de type entier à l’utilisateur.
- Indique à l’utilisateur si celle-ci est strictement positive, strictement négative ou nulle.
Corrigé de l’exercice
Valeur absolue
Écrire un programme qui :
- Donne la valeur absolue d’un entier n.
Corrigé de l’exercice
Voyelle ou consonne?
Écrire un programme qui :
- Demande une variable de type caractère à l’utilisateur.
- Indique à l’utilisateur si celle-ci est une voyelle ou une consonne.
(On considérera que le caractère saisi est en minuscule. Notez que si le caractère saisi n’est pas une voyelle, c’est nécessairement une consonne.)
Corrigé de l’exercice
Solution d’une équation du second degré.
Écrire un programme qui calcule les valeurs x1 et x2 d’une équation du second degré (Delta positif ou nul)
Corrigé de l’exercice
Année bissextile
Écrire un programme pour déterminer si une année est bissextile ou non.
Information
Depuis l’instauration du calendrier grégorien, sont bissextiles les années :
- n divisibles par 4 mais non divisibles par 100
- n divisibles par 400
Ainsi, 2008
est bissextile. L’an 2004
était bissextile suivant la première règle. L’an 1900
n’était pas bissextile, car divisible par 100
, ce qui va à l’encontre de la première règle, et non divisible par 400
, ce qui va à l’encontre de la seconde. L’an 2000
était bissextile car divisible par 400
.
Corrigé de l’exercice
Photocopies
Un magasin de reprographie facture 0,10€ les 10 premières photocopies, 0,09€ les 20 suivantes et 0,08€ au-delà.
Écrire un programme qui demande à l’utilisateur le nombre de photocopies effectuées et qui affiche la facture correspondante.
Corrigé de l’exercice
Les boucles itératives
Do/While/For
Écrire un programme qui affiche
i = 0
i = 1
i = 2
i = 3
i = 4
en utilisant les 3 types de boucles.
Corrigé de l’exercice
Factorielle
Écrire 3 programmes utilisant chacune des structures itératives pour calculer la factorielle.
Rappel !
5! est égale à 5 x 4 x 3 x 2 x 1
Corrigé de l’exercice
xn
Écrire un programme qui calcule pour 2 variables données x et n, x à la puissance n. x et n > 0, n entier.
Corrigé de l’exercice
Dessin
Écrire un programme qui affiche le dessin ci-dessous à l’écran. (Il faudra utiliser une double boucle…)
* * * * * * * * * * * * * * *
Corrigé de l’exercice
Distributeur de café
Créer un programme simulant un distributeur de café.
Le café coûte 1 euro.
L’utilisateur peut insérer des pièces de 5, 10, 20, 50 centimes et 1 euro.
Tant que la somme insérée par l’utilisateur n’est pas égale ou supérieure à 1 euro, il doit insérer encore des pièces.
Le distributeur rend ensuite la monnaie eventuelle.
Corrigé de l’exercice
Les fonctions
Factorielle
Reprendre l’exercice «factorielle» et écrire la fonction factorielle La fonction factorielle() a le prototype suivant :
@param int nb : Le nombre pour lequel on veut calculer la factorielle @return int : La factorielle du nombre int factorielle (int nb);
Corrigé de l’exercice
xn
Reprendre l’exercice xn et écrire la fonction puissanceN()
La fonction puissanceN() a le prototype suivant :@param int x : Le nombre pour lequel on veut calculer la puissance @param int n : La puissance à laquelle on veut élever le nombre @return int : Le nombre élevé à la puissance donnée int puissanceN(int x, int n);
Corrigé de l’exercice
Passage de paramètres par adresse
Échange de variables
Écrire un programme qui échange la valeur de deux variables nb1 et nb2 en utilisant un passage de paramètre par adresse La fonction echange() a le prototype suivant :
@param int *pi : premier nombre à échanger @param int *pj : second nombre à échanger @return void void puissanceN(int x, int n);
Corrigé de l’exercice
Les tableaux
Tableau - Déclarer et afficher
15 | 11 | 10 | 14 | 18 | 5 |
Déclarer et initialiser le tableau ci-dessus.
Afficher (sur une seule ligne) le contenu du tableau
Corrigé de l’exercice
Tableau - Somme et moyenne
Calculer la somme de toutes les valeurs du tableau de l’exercice précédent Calculer la moyenne des valeurs du tableau de l’exercice précédent
Corrigé de l’exercice
Tableau de caractères
Déclarer et initialiser un tableau avec votre prénom. (attention à la taille) Afficher le tableau contenant votre nom:
- Sur une ligne
- Un caractère par ligne
Corrigé de l’exercice
Reverse!
Mettre en majuscule chacun des caractères du tableau précédent.
Afficher votre nom à l’envers. (en commençant par le dernier caractère)
Corrigé de l’exercice
Full tableau
Le tableau notes contient la note de chacun des 28 étudiants de votre groupe au prochain test de programmation.
On souhaite en déterminer les éléments suivants :
- les notes min et max,
- la moyenne,
- l’écart-type
- la médiane.
Compléter l’exercice à partir du fichier suivant Full tableau
Corrigé de l’exercice
Crible d’Eratosthène
On désire rechercher tous les nombres premiers jusqu’à n = 120
, selon le programme du crible d’Eratosthène.
Le crible est la structure qui contient la suite d’entiers. Il est habituellement représenté par un tableau de booléens.
Écrire le programme qui affiche les nombres premiers parmi
n
.
Vous utiliserez un tableau à une dimension.
- Vous pourrez utiliser la fonction
sqrt()
de la bibliothèque<math.h>
- Vous pouvez aussi utiliser la bibliothèque
<stdbool.h>
pour définir un tableau de booléen.
Corrigé de l’exercice
Allocation dynamique
En C, il est possible d’allouer dynamiquement de la mémoire à l’exécution d’un programme. Les exemples ci-après sont proposés à partir de la page de Zeste de savoir consacrée à l’allocation dynamique.
Le schéma ci-dessous rappelle l’organisation des différentes zones pour les variables.
Grâce au site CTutor, nous pouvons visualiser facilement l’allocation sur le tas (heap).
Allocation d’un entier
Écrire un programme en C pour allouer dynamiquement en entier avec la fonction
malloc()
. Vous n’oublierez pas de libérer la mémoire avecfree()
Corrigé de l’exercice
Allocation d’un tableau d’entiers.
Écrire un programme en C pour allouer dynamiquement un tableau de 10 entiers avec la fonction
malloc()
. Vous n’oublierez pas de libérer la mémoire avecfree()
Corrigé de l’exercice
Les tableaux de tailles variables VLA
On peut aussi créer depuis C99 des tableaux de tailles variables, c’est à dire dont la taille est déterminée à l’exécution.
Écrire un programme qui permet d’allouer dynamiquement un tableau en utilisant les VLA ou tableaux de longueurs variables.
Corrigé de l’exercice
Dans le cas d’un VLA, le tableau est alloué sur la pile, dont la taille dépend du système d’exploitation.
Sous linux, on peut visualiser la taille de la pile avec ulimit.
ulimit -a
stack size (kbytes, -s) 8192
Crible d’Erathosthene avec une allocation dynamique.
Reprendre l’exercice de la crible d’Erathosthene en allouant le tableau dynamiquement.
Vérifier les limites de la pile et du tas.
Corrigé de l’exercice
Attention : Problème avec sqrt() sous Qt.
Si vous travaillez avec Qt, il y a peut-être une erreur à la compilation. (link et librairie math.h).
Vous pouvez compiler votre programme avec la ligne de code suivante :
gcc main.c -o main -lm