Creative Commons License

Questions: première session

Question 1

Répondez aux questions suivantes :

(2 points)

Question 2

Vous êtes sur une machine de 64 bits et vous utilisez également un système d’exploitation 64bits. Considérez les variables suivantes :

#include <string.h>
char message1[10] = "Bonjour" ;
char *message2 =  "Bonjour" ;
	    

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

Justifiez votre réponse. (2 points)

Question 3

Le contenu d’un fichier opérateurs.h est donné ci-dessous

#ifndef __OPERATEURS_H__
#define __OPERATEURS_H__
int num = 20;
int somme( int, int);
#define PI 3.141592653589
#define multiplication(a,b) a * b
#endif //__OPERATEURS_H__

Pourquoi utilisons-nous les directives du préprocesseur comme ifndef, define et endif? Justifiez votre réponse avec des exemples. (2 points)

Question 4

Ecrivez un code complet en C dans le but de permuter les valeurs de deux variables. Votre code doit contenir les fichiers d'en-tête nécessaires, une fonction échange (…) et une fonction main. Le but de la fonction échange (...) est d’assurer la permutation des valeurs de deux variables. La fonction main doit appeler la fonction échange (...) et doit afficher les valeurs avant et après l'appel de la fonction. (2 points)

Question 5

Coder en C une structure de données Capteur qui comporte les éléments suivants : identifiant, temps, 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 capteur, c’est-à-dire, le nom du bâtiment et son adresse. temps correspond à l'heure à laquelle les valeurs du capteur ont été obtenues. Instanciez une variable de cette structure. (2 points)

Question 6

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

Justifiez votre réponse. (2 points)

Question 7

Codez en C un programme qui prend des numéros (un ou plusieurs) passés par la ligne de commande. L’objectif de code est de

  1. Trier les nombres par ordre croissant
  2. Trier les nombres par ordre décroissant

N’utilisez pas scanf. (2 points)

Question 8

Coder en C la fonction qui permet d’afficher les n premières et les n dernières lignes d’un fichier dont le nom de fichier et la valeur n sont passés par l’utilisateur en utilisant la ligne de commande.

Pensez aux commandes head et tail en Linux dont l’objectif est d’afficher les n premières et les n dernières lignes d’un fichier. (2 points)

Question 9

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

  1. Calcule le nombre de caractères dans une chaine de caractères
  2. Trouve la première occurrence d'une phrase dans une chaîne de caractères
  3. Trouve toutes les occurrences d'une phrase dans une chaîne de caractères

Vous devez écrire des fonctions pour chacune de ces opérations. (2 points)

Question 10

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

  1. void inserer(list *, int*) prend deux entrées : une liste d’entiers simplement chainée et un pointeur entier. L’objectif de cette fonction est d’ajouter l’entier pointé par le pointeur entier à la fin de la liste chainée.
  2. int* supprimer (list *) prend une entrée : une liste d’entiers simplement chainée. L’objectif de cette fonction est de supprimer le premier entier dans la liste et de renvoyer cet entier en utilisant un pointeur entier.

(2 points)