Questions: deuxième session
- Durée: 2 heures
- Total: 15 points
- Documents: autorisés
- Types de documents autorisés: Tous les documents autorisés
- Calculatrices : non autorisées
Question 1
Coder en C la fonction aire qui permet de calculer l’aire d’un cercle. L’entrée de la fonction aire est le rayon du cercle. La fonction renvoie la valeur de l’aire.(1 point)
Question 2
Quelles sont les différentes étapes de compilation d’un programme C en utilisant un compilateur comme gcc. Quelles sont les options de gcc pour voir la sortie de chaque étape. (2 points)
Question 3
Quel sont les objectifs des options -o et -c? Donnez un exemple d’utilisation pour chaque option. (1 point)
Question 4
Vous êtes sur une machine de 64 bits et vous utilisez également un système d'exploitation 64bits. Quelle est la valeur renvoyée par chacune des fonctions suivantes ?
- sizeof (int *)
- sizeof (int **)
- sizeof (char **)
- sizeof (float *)
Justifiez votre réponse. (2 points)
Question 5
Vous avez des fichiers C suivants : calcule.c, aire.c et perimetre.c. Ecrivez un Makefile qui peut générer un fichier exécutable appelé calcul en utilisant les trois fichiers précédents. (1 point)
Question 6.a
Ci-dessous vous avez une partie de code. Quel est l’objectif de ce code?
int num ;
while(1) {
printf(“Entrez un numéro: ”) ;
scanf(“%d”, &num) ;
if (num > 3) {
break;
}
}
(1 point)
Question 6.b
Sans changer l’objectif, modifiez le code précédent en utilisant une boucle :
- for
- do..while
(2 points)
Question 7
Considérer un entier d (int d ;). Codez en C une fonction qui vérifie si les 3eme et 5eme bits de droite sont 1 (en binaire). Si les deux bits sont 1, la fonction renvoie 1 sinon 0. (1 point)
Question 8
Coder en C une structure de données Capteur qui comporte les éléments suivants : identifiant, luminosité, pression, température, bâtiment. Les trois valeurs des mesures (luminosité, pression, température) doivent être des nombres flottants. L’élément bâtiment est la localisation de capteurs, c’est-à-dire, le nom de bâtiment et son adresse. Instanciez une variable de cette structure. (2 points)
Question 9
Quelles sont les différences entre les fonctions récursives et les approches itératives. Donnez un exemple pour chaque approche. (1 point)
Question 10
Sans utiliser les bibliothèques standards ou externes (par exemple string.h), écrivez le code en C qui
- copie une chaine de caractères dans une autre chaine de caractères
- concatène deux chaines de caractères
- calcule le nombre de caractères dans une autre chaine de caractères
(2 points)
Question 11
Codez en C un programme qui prend des numéros (un ou plusieurs) passé par la ligne de commande. L’objectif de cette fonction est de calculer
- La somme de ces numéros
- La moyenne de ces numéros
N’utilisez pas scanf. (2 points)
Question 12.a
Codez en C le code qui affiche le compte de différents caractères (a-z, A-Z, 0-9) dans un fichier. Le nom du fichier est saisi par l’utilisateur. Par exemple, la sortie de votre programme peut rassembler comme ci-dessous.
- A: 245 fois
- B: 34 fois
- ...
(1 point)
Question 12.b
Codez en C le programme qui cherche un fichier dans un répertoire. Le nom de fichier ainsi que le chemin de répertoire sont saisis par l’utilisateur. Le programme affiche ‘oui’ ou ‘non’. Pour simplifier notre question, nous imaginons qu’il n’y a pas des sous-répertoires dans le répertoire saisi par l’utilisateur. (1 point)