Creative Commons License

Questions: première session 1

Question 1

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 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.. (1 point)

Question 3

En utilisant les listes simplement chainées, écrivez le code liste.c (et liste.h) et implémentez les fonctions suivantes :

(2 points)

Question 4

Coder en C la fonction qui permet d’afficher les 10 premières et les 10 dernières lignes d’un fichier dont le nom est passé par la ligne de commande. (2 points)

Question 5

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. (2 points)

Question 6

Quelle est la valeur renvoyée par chacune des lignes suivantes?

Justifiez votre réponse.(1 point)

Question 7

Déclarez une structure de représentation d'une liste doublement chainée pour qu'elle puisse fonctionner avec les différents types de données: les entiers, les nombres en flottant, les caractères ou mêmes les structures. Attention, l'objectif de cette question n'est pas d'écrire les fonctions, mais simplement de déclarer une structure de données (voir struct). Pensez à utiliser les pointeurs génériques. ( 1 point)

Question 8

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

N’utilisez pas scanf. (2 points)

Question 9

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 % 2) {
    break;
  }
}

Sans changer l’objectif, modifiez le code précédent en utilisant une boucle :

(1 point)

Question 10

Coder en C les fonctions suivantes

  1. aire qui permet de calculer l’aire d’un cercle en fonction du rayon.
  2. 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 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.

(2 points)

Question 12

Quels sont les avantages à utiliser un Makefile et la commande make.

Vous avez des fichiers C suivants : client.c, client.h, serveur.c, serveur.h, couleur.c et couleur.h. Ecrivez un Makefile qui peut générer deux fichiers exécutables appelés server et client en utilisant les fichiers précédents. L’exécutable client est généré en utilisant client.c, client.h, couleur.h et couleur.c et l’exécutable server est généré en utilisant les fichiers serveur.c, serveur.h, couleur.h et couleur.c. (1 point)

Question 13

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 lignes suivantes ?

  1. sizeof (int)
  2. sizeof (int *)
  3. sizeof (int **)
  4. sizeof (int ***)

Justifiez votre réponse. (1 point)

Question 14

Quelles sont les différences entre les fonctions fgets et scanf en C ? Donnez quelques exemples. (1 point)

Question 15

(1 point)