Boucles


Cliquez ici pour retirer la feuille de style si vous souhaitez imprimer ce document (ou en cas de problème d'affichage).
Notes :
  • N'utilisez pas de navigateur de fichier ! Apprenez à ne vous servir que du terminal.

Compilation (rappels)

  • Créez un répertoire dans lequel vous placerez tous vos TP de C
  • Créez un sous-répertoire dans lequel vous placerez tous vos exercices d'aujourd'hui
  • Pour chaque exercice, vous créerez un sous répertoire
  • Pour compiler un fichier "exo.c", il faut executer la commande :
    gcc -ansi -pedantic -Wall exo.c -o executable
    en remplacant "exo.c" par votre fichier et "executable" par le nom du fichier executable que vous voulez creer. Si vous ne mettez pas "-o executable", le fichier produit s'appelera "a.out"

Exercice 1

Si ce n'est pas déjà fait, terminez le TP2.

Exercice 2

Si ce n'est pas déjà fait, terminez le td3

Exercice 3

Ecrivez les fonctions suivantes, n'oubliez pas d'écrire une fonction main() permettant de les tester. Les arguments devant être fournis aux fonctions par le main() seront soit demandé à l'utilisateur avec un scanf, soit rentré sur la ligne de commande.
  • Écrire une fonction qui prend un tableau d'entiers et renvoie le plus grand élément.
  • Écrire une fonction qui prend deux tableaux d'entiers et recopie le premier dans le second. Réfléchissez aux paramètres pour gérer correctement les cas où les deux tableaux ne font pas la même taille.
  • Ecrire une fonction qui prend trois tableaux d'entiers et recopie le 2e puis le 3e dans le 1er. Vous pouvez (devez ?) vous servir de la fonction précédante.
  • Écrire une fonction qui renvoie le nombre de caractères d'une chaine de caractères (sans utiliser la fonction strlen de string.h)
  • Écirer une fonction qui prend deux chaines de caractères et renvoie la taille du plus long prefixe commun (exemple pour "avion" et "aviation", la fonction revoie 3 car le plus long prefixe commun est "avi").

Exercice 4

Etudiez le code suivant :
  • D'après vous que fait il ?
  • Compilez (avec les options habituelles). Que veut dire le warning ?
  • Testez.
#include <stdio.h>
void affiche_tab(int* tab, int taille)
{
	int i;
	for(i=0;i<taille;i++)
		printf("%d ",tab[i]);
	printf("\n");
}
void affiche_entiers(int n)
{
	int tab[n];
	int i;
	for(i=0;i<n;i++)
		tab[i]=i+1;
	affiche_tab(tab,n);
}
int main()
{
	affiche_entiers(12);
	return 0;
}
 

Exercice 5

Etudiez le code suivant :
  • D'après vous que fait il ?
  • Compilez (avec les options habituelles). Que veut dire le warning ?
  • Testez. Expliquez.
#include <stdio.h>
#define TAILLE 12
void affiche_tab(int* tab, int taille)
{
	int i;
	for(i=0;i<taille;i++)
		printf("%d ",tab[i]);
	printf("\n");
}
int* creer_entiers()
{
	int tab[TAILLE];
	int i;
	for(i=0;i<TAILLE;i++)
		tab[i]=i+1;
	return tab;
}
int main()
{
	int copy[TAILLE];
	int* tab = creer_entiers();
	int i;
	for(i=0;i<TAILLE;i++)
		copy[i] = tab[i];
	affiche_tab(copy,TAILLE);
	affiche_tab(tab,TAILLE);
	return 0;
}