1 Tableaux

Cet exercice a pour seul but de vérifier que vous savez déclarer, construire et utiliser les tableaux en C.

Écrire un petit programme qui déclare un tableau d’entiers de taille prédéfinie puis qui, à l’aide d’un menu interactif, permet d’effectuer les opérations suivantes :

  • afficher la taille du tableau ;
  • afficher le contenu du tableau ;
  • modifier l’élément à l’indice i ;
  • échanger les valeurs de deux éléments ;
  • compter le nombre d’occurrences d’une valeur ;
  • ...

2 Occurrences

Écrire un programme qui lit un texte sur l’entrée standard, compte le nombre d’occurrences de chaque lettre minuscule (’a’. . . ’z’), puis affiche les résultats.

Compléter ensuite le programme pour qu’il compte aussi les lettres majuscules. Le faire afficher les résultats sous forme d’histogramme horizontal (facile) ou vertical (plus difficile).

3 Quel est ce jour ?

Le but de cet exercice est d’écrire un programme permettant de calculer le jour de la semaine correspondant à une date donnée. Pour cela, on va dérouler les jours à partir d’une date de
référence.
Définir une structure permettant de stocker une date avec le jour de la semaine correspondant. Écrire :

  • une fonction calculant le lendemain d’une date donnée ;
  • une fonction calculant la veille d’une date donnée ;
  • une fonction permettant de vérifier l’ordre entre deux dates.

Attention aux années bissextiles.

Écrire ensuite un programme qui donne le jour de la semaine d’une date donnée. Pour cela, le programme utilisera une date dont le jour de la semaine est connu (par exemple, le 1er janvier 2013 est un mardi) puis utilise la fonction lendemain ou veille pour trouver la solution.
On pourra procéder, au choix, de manière itérative ou récursive.

4 Manipulation de chaînes de caractères

Écrire les fonctions de manipulations de chaînes de caractères suivantes :

int my_strlen(const char s[]);

Cette fonction doit retourner la longueur de la chaîne passée en paramètres.

 

void my_strcpy(char s1[], const char s2[]);

Cette fonction doit recopier la chaîne s2 dans la chaîne s1.

 

void my_strcat(char s1[], const char s2[]);

Cette fonction doit ajouter (concaténer) la chaîne s2 au bout de la chaîne s1.

 

int my_strcmp(const char s1[], const char s2[]);

Cette fonction doit comparer les deux chaînes passées en paramètre, et retourner un entier respectivement inférieur, égal ou supérieur à zéro si la chaîne s1 est respectivement inférieure, égale ou supérieure à la chaîne s2, suivant l’ordre lexicographique.


Écrire ensuite un programme permettant de tester ces fonctions.

5 Arguments sur la ligne de commande

Il est possible d’accéder aux paramètres de la ligne de commande en déclarant la fonction principale main de la manière suivante :

int main(int argc , char ∗argv[])
{
    // ...
}


Dans ce cas, argc correspond au nombre d’arguments passés au programme. Le tableau argv est un tableau de chaînes de caractères de taille argc contenant les paramètres passés sur la ligne de commande. Le premier élément argv[0] est le nom utilisé pour lancer le programme.


Écrire un programme affichant la liste des arguments passés sur sa ligne de commande.