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 :


	     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 add( int, int);
#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 nombres à virgule flottante. 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

Quelles sont les différences entre les mots-clés struct et union en C ? 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. Instanciez une variable de cette structure (par exemple, les détails de votre livre préféré). Votre structure doit utiliser union. (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 calculer

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 autre chaine de caractères
  2. Copie une chaine de caractères dans une autre chaine de caractères
  3. Concatène deux chaines de caractères
  4. Compare deux chaines de caractères.

Vous devez écrire des fonctions pour chacune de ces opérations sur les chaînes de caractères. (2 points)

Question 10

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

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

Rappelez bien qu’une liste générique simplement chainée fonctionne avec les différents types de données : les entiers, les nombres en flottant, les caractères ou même les structures. (2 points)