2 Premiers programmes en C
Ces exercices ont pour but de vous familiariser avec la syntaxe du
langage C :
-
les structures de contrôle : if, while,
for...
- quelques fonctions d'entrée/sortie : printf(),
scanf(), getchar()...
- la structure de base d'un programme
- le codage des entiers positifs en binaire.
Exercice 4 [Factorielle]
Question 1
Donner le code d'une fonction
unsigned int factorielle (unsigned int n) ;
qui calcule
n!. On développera une version itérative et une
version récursive de la fonction.
Question 2
Donner le code d'un programme qui lit un entier et affiche sa
factorielle.
Exercice 5 [Grande ligne]
Soit la fonction C maxl_line() qui lit un texte sur l'entrée
standard et retourne la longueur de la plus grande ligne du texte.
On pourra utiliser la fonction getchar() de la
bibliothèque standard qui renvoie le code ASCII du caractère lu
sur stdin, la valeur EOF en fin de fichier ou
cas d'erreur.
Question 1
Donnez le prototype de la fonction maxl_line().
Question 2
Donnez la définition de la fonction maxl_line().
Question 3
Donnez le code d'un programme qui lit son entrée standard et
affiche la longueur de la plus longue ligne.
Exercice 6 [Parenthésage d'une expression]
On lit sur l'entrée standard (stdin) un texte, terminé
par EOF, dont on veut vérifier que le parenthésage est
correct. On sortira sur la sortie standard (stdout) un
message pour le résultat. De plus, la commande se terminera sur un
succès si et seulement si l'expression est bien parenthésée.
Exercice 7 [Exemples de macros]
Définir à l'aide de macros cpp les « constantes » VRAI et
FAUX.
Écrire ensuite, le plus simplement possible, une macro
cpp qui teste si un caractère c passé en
paramètre est un chiffre ou une lettre majuscule : CHIFROUMAJ(c).
Exercice 8 [Word count]
Donnez un programme C qui compte le nombre de mots du texte fourni
en entrée.
Exercice 9 [Conversion caractères/entiers]
On calcule la valeur d'un entier entré sur stdin sous
forme d'une suite de caractères (terminée par un caractère autre
qu'un chiffre).
L'arithmétique « classique » peut s'appliquer sur le type
char. La valeur numérique d'un caractère est le code
ASCII de ce caractère (65 pour 'A', 66
pour 'B'...).
Exercice 10 [Format des entiers positifs]
On veut calculer le nombre de bits sur lequel sont codés les
unsigned int. Le format des données n'est pas précisé
dans les spécifications du langage C, il peut dépendre de la
machine ou du compilateur.
L'opérateur arithmétique x << lg
calcule un décalage sur x d'une longueur lg bits
vers les bits de poids fort. Les lg bits de poids forts
sont perdus, ceux de poids faible sont mis à 0.
On remarquera qu'on peut utiliser cet opérateur pour une
multiplication (ou une division avec >>
) par 2, 4..., Ã
condition de faire attention aux pertes éventuelles
d'informations.
Exercice 11 [Conversion décimal/binaire]
Définissez une fonction qui affiche sur la sortie standard la
représentation binaire d'un entier non signé fourni en paramètre.