Questions: première session 1
- Année: 2020-2021
- 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
Coder en C la fonction trier qui prend un tableau des nombres (entiers) et qui range et affiche ces nombres dans l’ordre croissant et décroissant.
Votre deuxième objectif est d'écrire une seconde fonction qui recherche un numéro dans ce tableau trié. L'utilisateur saisit un numéro et le code vérifie et affiche un message indiquant si le numéro est présent ou non.(2 points)
Question 2
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) {
break;
}
}
Sans changer l’objectif, modifiez le code précédent en utilisant une boucle :
- for
- do..while
(1 point)
Question 3
Coder en C la fonction int conversion (char * str) qui permet de convertir une chaine de caractères str à un entier. La fonction conversion renvoie l’entier après la conversion.
Par exemple, si l'entrée est "2340", une chaîne de caractères, nous obtenons l'entier suivant: 2340.
Vous ne pouvez pas utiliser les fonctions de la bibliothèque standard (par exemple, atoi, sprintf, sscanf etc.).(1 point)
Question 4
Quelles sont les différences entre le mot-clé sizeof, les fonctions strlen (string.h) et strnlen (string.h) en C ? Donnez quelques exemples en utilisant char, char* et char [].(1 point)
Question 5
Quelle est la valeur renvoyée par chacune des lignes suivantes?
- 10 % 8
- 10 & 8
- 10 | 8
- 10 && 8
- 10 || 8
- 10 ** 8
Justifiez votre réponse.(1 point)
Question 6
Une des bonnes pratiques de programmation en C est de diviser le code en plusieurs modules (module1, module2,etc…) Pour chaque module on associe un fichier .h (exemple module1.h) et un fichier .c (exemple module2.c).
- Quel code est implémenté dans le fichier .h ?
- Quel code est implémenté dans le fichier .c ?
- Quelle commande de compilation permet d’obtenir le fichier .o à partir du fichier.c ? Donner la commande pour avoir le module1.o à partir du module1.c
- Que contient le fichier module1.o ?
- Est-ce que le fichier module1.o est un fichier exécutable ?
(1 point)
Question 7
En utilisant les listes simplement chainées, écrivez le code liste.c (et liste.h) et implémentez les fonctions suivantes :
- void inserer(list *, float) prend deux entrées: une liste de nombres réels simplement chainée et un nouveau nombre réel. L’objectif de cette fonction est d’ajouter ce nombre au début de la liste chainée.
- float supprimer (list *) prend une entrée : une liste de nombres réels simplement chainée. L’objectif de cette fonction est de supprimer le premier nombre réel dans la liste et de renvoyer ce nombre.
(2 points)
Question 8
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)
Question 9
Coder en C une structure de données Livre qui comporte les éléments suivants : identifiant, titre, nom d’écrivain(e), nombre de pages, année de publication, nom de la maison d’édition, prix.
Coder une deuxième structure de données Etudiant qui comporte les éléments suivants : nom, prénom, adresse (rue, ville etc.), filière (ETI, IRC ou CGP), cinq livres préférés.
Mais nous avons une contrainte. Nous ne savons pas la taille maximum (ou le nombre de caractères) de nom, prénom, rue, ville, nom du livre etc. C’est l’utilisateur qui doit saisir ces valeurs pendant l’exécution.
Pour ces deux structures Livre et Etudiant, n’oubliez pas d’utiliser les types enum, struct et/ou union.
Instanciez des variables de ces deux structures.
(1 point)
Question 10
Coder en C les fonctions suivantes
- aire qui permet de calculer l’aire d’un cercle en fonction du rayon.
- perimetre qui permet de calculer le périmètre d’un cercle en fonction du rayon.
L'entrée des deux fonctions aire et perimetre est le rayon du cercle (un nombre réel).
Les deux fonctions aire et perimetre renvoient l'aire et le périmètre du cercle.(1 point)
Question 11
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
(2 points)
Question 12
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 13
Quelles sont les différences entre les fonctions récursives et les approches itératives?
La suite de Fibonacci est une suite d’entiers définie comme suit :
- U0=1
- U1=1
- Un= Un-1 + Un-2
En utilisant une méthode itérative, coder en C la fonction void fibonacci(int n) qui prend n comme entrée et affiche les n termes de la suite de Fibonacci U0, U1, U2,…Un.(1 point)
Question 14
Codez en C un programme qui prend des numéros (un ou plusieurs) passé par la ligne de commande. L’objectif du programme est de calculer
- Le numéro plus petit
- Le numéro plus grand
- La somme de ces numéros
- La moyenne de ces numéros
N’utilisez pas scanf.(2 points)
Question 15
Coder en C la fonction qui permet d’afficher les 25 premières et les 25 dernières lignes d’un fichier dont le nom est passé par la ligne de commande.(2 points)