Questions: première session 2
- Année: 2021-2022
- Durée: 2 heures
- Total: 20 points
- Documents: autorisés
- Types de documents autorisés: Tous les documents autorisés
- Calculatrices : non autorisées
Question 1
Rédigez un programme C pour gérer les informations suivantes relatives à 5 villes : le nom des villes, la population, distance en train ou en voiture entre deux villes.
Expliquez votre code à l'aide d'exemples. Il est possible qu'il n'y ait pas de route ou de train direct entre deux villes. Les villes et les distances peuvent être imaginaires.
N’oubliez pas d’utiliser les types enum, struct ou union.(3 points)
Question 2
Coder un programme en C la fonction int main(int argc, char* argv[]) qui permet d’afficher le nombre de lignes dans un fichier dont le nom est passé en ligne de commande.(1 point)
Question 3
Quelle est la valeur renvoyée par chacune des lignes suivantes?
a) 15 % 8
b) 15 & 8
c) 15 | 8
d) 15 ** 8
Justifiez votre réponse.(1 point)
Question 4
Codez en C une fonction qui prend un tableau d'un ou plusieurs entiers. L’objectif de cette fonction est de calculer
- a) Le numéro plus grand
- b) Le numéro plus petit
(1 point)
Question 5
Considérer un entier d (int d ;). Codez en C une fonction qui vérifie si les 12eme ou 5eme bits de droite sont 0 (en binaire). Si les deux bits sont 0, la fonction renvoie 1 sinon 0.(1 point)
Question 6
Codez en C un programme qui affiche les 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
- m
- ...
- Z
(1 point)
Question 7
Coder en C la fonction trier qui prend un tableau contenant un ou plusieurs mots (chaîne de caractères) et qui range et affiche ces mots dans un ordre lexicographique.
Par exemple, si votre tableau contient les mots : module, examen, programmation, votre function doit afficher
1. examen
2. module
3. programmation
(3 points)
Question 8
Quelles sont les différences entre les fonctions récursives et les approches itératives?
Expliquez-les à l'aide d'exemples.(1 point)
Question 9
Considérons la chaîne de caractères mon_message :
char mon_message[100] = ””;
Coder un programme en C avec une ou plusieurs fonctions pour réaliser ce qui suit
- Copier "Algorithmes" dans mon_message
- Ajouter "et Programmation" à la fin de mon_message
- Afficher la taille de mon_message
Vous ne pouvez pas utiliser les fonctions disponibles dans la bibliothèque <string.h>.(2 points)
Question 10
Codez en C le programme qui affiche tous les fichiers *.c et *.h (par exemple, liste.h, liste.c, etc.) dans un répertoire. Le chemin du répertoire est donné en entrée par l'utilisateur. Pour simplifier notre question, nous imaginons qu’il n’y a pas des sous-répertoires dans le répertoire saisi par l’utilisateur.(2 points)
Question 11
Coder en C la fonction char * conversion (int) qui permet de convertir une chaine de caractères à un entier. La fonction conversion renvoie un pointeur vers cette chaîne de caractères après la conversion.
Par exemple, si l'entrée est 98765, nous obtenons un pointeur vers la chaîne de caractères "98765".(2 points)
Question 12
Codez en C un programme qui prend des mots (un ou plusieurs) passés par la ligne de commande. L’objectif du programme est de calculer
1. le nombre de mots saisis par l'utilisateur
2. le mot le plus long
3. le mot le plus court
N’utilisez pas scanf ou fgets.(2 points)