Creative Commons License

Questions: première session

Question 1

Coder en C la fonction puissance qui prend deux entiers a et b et qui renvoie la valeur du nombre a élevé à une puissance b. Par exemple, puissance(2,3) renvoie la valeur 8. N’utilisez pas la fonction power() (math.h). (1 point)

Question 2

Quels sont les objectifs des options –E, -o et –c du compilateur gcc? Donnez un exemple d’utilisation pour chaque option. (1 point)

Question 3

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

  1. 2 & 4
  2. 2 && 4
  3. 2 | 4
  4. 2 || 4

Justifiez votre réponse. (1 point)

Question 4

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 5

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 ?

Justifiez votre réponse. (1 point)

Question 6

Ci-dessous vous avez une partie de code. Quel est l’objectif de ce code ? (1 point)

#include <stdio.h>
#include <string.h>
int main() {
  char phrase[100];
  while(1) {
   printf(“Entrez une phrase: ”) ;
   fgets(phrase, 100, stdin) ;
   phrase[strnlen(phrase, 100)-1] = ‘\0’ ;
   if (strncmp(phrase, “FIN”, 100) == 0) {
    break ;
   }
   int num[2];
   sscanf(phrase, “%d %d”, &num[0], &num[1]);
   printf (“%d\n”, num[0] & num[1]) ;
  }
  return(0) ;
}

Question 7

Coder en C la fonction float conversion (char * str) qui permet de convertir une chaine de caractères str à un un nombre flottant (float). La fonction conversion renvoie l’entier après la conversion. Vous pouvez utiliser les fonctions disponibles dans les bibliothèques standards ou vous pouvez écrire votre propre fonction. (1 point)

Question 8

Considérer un entier d (int d ;). Codez en C une fonction qui vérifie si les 4eme et 20eme bits de gauche sont 1 (en binaire). Si les deux bits sont 1, la fonction renvoie 1 sinon 0. (1 point)

Question 9

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

Question 10

Coder en C une structure de données Etudiant qui comporte les éléments suivants : Nom, Prénom, Adresse (rue, ville etc.), Filière (ETI, IRC ou CGP), Modules choisis (5 maximum), la note dans chaque module.

Coder en C une structure de données Module qui comporte les éléments suivants : Nom du module, responsable du module, les intervenants dans le module.

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 module etc. C’est l’utilisateur qui doit saisir ces valeurs pendant l’exécution.

Pour les deux structures Etudiant et Module, n’oubliez pas d’utiliser les types enum, struct et/ou union. (2 points)

Question 11

Sans utiliser les bibliothèques standards ou externes (par exemple string.h), écrivez le code en C qui

  1. copie une chaine de caractères dans une autre chaine de caractère
  2. concatène deux chaines de caractères
  3. calcule le nombre de caractères dans une autre chaine de caractères
(2 points)

Question 12

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

  1. Le numéro plus grand
  2. Le numéro plus petit
  3. La moyenne
Pensez à utiliser les pointeurs pour renvoyer ces valeurs. (1.5 points)

Question 13

Codez en C un programme qui cherche une phrase passée par l’utilisateur dans un fichier. Le nom du fichier est également saisi par l’utilisateur. Votre programme doit afficher les numéros de lignes où la phrase apparait. Par exemple, si l’utilisateur cherche le mot float dans un fichier calcule.c, l’affichage de votre programme peut ressembler à ceci :
  Ligne 10
  Ligne 23
  ...
(1.5 points)

Question 14

Codez en C la fonction qui affiche les différents mots dans un fichier. Le nom du fichier est saisi par l’utilisateur. Par exemple, la sortie de votre programme peut ressembler à ceci.
  main
  int
  print
  float
  ...
(1.5 points)

Question 15

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

Question 16

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

(1.5 points)