« Exercices en langage C/Structures de contrôle » : différence entre les versions

Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
m →‎Triangle d'étoiles : oubli article défini
Thierry46 (discussion | contributions)
Structuration et exercice sur if
Ligne 1 :
{{Exercices en langage C}}
== TriangleStructures d'étoilesconditionnelles ==
=== Tester votre age ===
Écrire un programme testage.c contenant une fonction <code>main</code> qui :
* lire sur le clavier l'âge de l'utilisateur avec la fonction <code>scanf</code>;
* teste si la réponse est valide par analyse du code retour de <code>scanf</code> et teste si la valeur est comprise entre 0 et 130;
* affiche si l'utilisateur est majeur (>= 18 ans) ou mineur.
 
<div style="width:70%">{{Boîte déroulante|titre=Solution|contenu =
 
<source lang="c">
/*
Nom : testage.c
Auteur : Thierry46
Role : Demande l'âge de l'utilisateur,
teste si la réponse est valide et
affiche si l'utilisateur est majeur (>= 18 ans).
Paramètres : non pris en compte.
Code retour : 0 (EXIT_SUCCESS)
Pour produire un exécutable avec le compilateur libre GCC :
gcc -Wall -std=c99 -o testage.exe testage.c
Pour exécuter, tapez : ./testage.exe
 
Version : 1.0 du 18/1/2008
Licence : GNU GPL
*/
 
#include <stdio.h>
#include <stdlib.h>
 
/* Constantes symboliques pour changement plus facile :
pas besoin de chercher toutes les occurences de la constante litterale
dans le corps de la fonction. */
#define AGE_MAJEUR 18
#define AGE_MINI 0
#define AGE_MAXI 130
int main(void)
{
// Declare les variables
int ageLu = 0;
int nbChampLu = 0;
int codeRetour = EXIT_SUCCESS; // Valeur par defaut
 
// Ecrit la question à l'écran
(void)puts("Quel est votre age :");
 
// Lit la réponse de l'utilisateur : un entier
nbChampLu = scanf("%d", &ageLu);
// Teste si scanf a bien reussi a convertir le nombre entre
if (nbChampLu != 1)
{
(void)fputs("\aErreur : Vous devez entrer un nombre entier !\n", stderr);
codeRetour = EXIT_FAILURE;
}
else if (ageLu < AGE_MINI || ageLu>AGE_MAXI)
{
(void)fprintf(stderr,
"\aErreur : Vous devez entrer un nombre entier compris entre %d et %d !\n",
AGE_MINI, AGE_MAXI);
codeRetour = EXIT_FAILURE;
}
else
{
// Le test se fait a l'appel de puts
(void)puts((ageLu < AGE_MAJEUR) ? "Vous etes mineur !" : "Vous etes majeur !");
}
 
return codeRetour;
} // int main(...
</source>
}} </div>
 
== Structures répétitives ==
=== Triangle d'étoiles ===
Compléter la fonction afficherTriangle dans le programme ci-dessous : cette fonction devra afficher un triangle rempli d'étoiles (*) sur un nombre de lignes donné passé en paramètre, exemple :
<pre>
Ligne 122 ⟶ 196 :
}} </div>
 
=== Somme d'entiers ===
Ecrire un programme ''somme'' demandant à l'utilisateur de taper 10 entiers et qui affiche leur somme. Le programme ne devra utiliser que 3 variables et ne devra pas utiliser de tableau.