Série 2 Exercices Langage C
Série 2 Exercices Langage C
Exercice1
On appelle palindrome une suite de caractères qui se lit de la
même façon dans les deux sens (exemple : …). Déterminer si la suite de
caractères lue à l'exercice 1 est un palindrome.
Exercice2
Ecrire un
programme C qui lit une suite de caractères dans un tableau. La suite se
termine par un retour à la ligne (caractère "\n") et on vérifie
qu'elle n'est pas plus longue qu'une constante dénommée TAILLELIGNE. Imprimer
sa longueur (caractère de retour à la ligne non compris).
Exercice3
Soit t un tableau de n réels (par exemple). Écrire un bloc
d'instructions permettant de trier le tableau t selon la
méthode du tri par sélection
Exercice4
Programmer l'algorithme suivant qui permet de
chercher un élément dans un tableau
(trié ou non) :
Soit t
un tableau de n éléments (triés ou non). Soit aChercher une valeur à chercher.
L'algorithme de la recherche avec une sentinelle se présente comme suit :
indice = -1
t[n] = aChercher
Répéter
indice = indice + 1
Jusqu'à t[indice] =
aChercher
Si indice < n on trouve à
"indice"
Sinon on ne trouve pas.
Exercice5(recherche dichotomique dans un
tableau trié)
Le
tableau devrait être trié avant d'appliquer cette méthode. Soit le bloc
d'instructions suivant qui résume la méthode de
recherche dichotomique dans un tableau trié :
Exercice6
Écrire un bloc d'énoncés permettant
d'afficher les 7 journées de la semaine
Correction
Exercice1
#include <stdio.h>
#define TAILLELIGNE 80
main ()
{int longueur = 0, finligne =
0, i, symetrie = 1;
char ligne[TAILLELIGNE];
while
((longueur<=TAILLELIGNE) && (!finligne))
{scanf("%c",&ligne[longueur]);
finligne =
(ligne[longueur]=='\n');
if (!finligne)
longueur=longueur+1;
}
i=0;
while ((i<=
longueur/2) && symetrie)
{symetrie = (ligne[i] ==
ligne[longueur-i-1]);
if (symetrie) i=i+1;
}
printf("la suite
");
if (symetrie)
printf("est");
else printf("n'est
pas");
printf(" un
palindrome\n");
}
|
Exercice2
#include <stdio.h>
#define TAILLELIGNE 80
main ()
{int longueur = 0, finligne =
0;
char ligne[TAILLELIGNE];
while
((longueur<=TAILLELIGNE) && (!finligne))
{scanf("%c",&ligne[longueur]);
finligne =
(ligne[longueur]=='\n');
if (!finligne)
longueur=longueur+1;
}
printf
("%d",longueur);
}
|
Exercice3
int
i, j, indMinimum ;
float
temporaire ;
for
( i = 0 ; i < n - 1 ; i++ ) /* du premier à avant dernier */
{
indMinimum
= i ;
for
( j = i + 1 ; j < n ; j++ )
if (t[j] < t[indMinimum]) indMinimum = j ;
if
( indMinimum != i ) { /* on échange
*/
temporaire = t[i] ;
t[i] = t[indMinimum] ;
t[indMinimum]
= temporaire ;
}
}
|
Exercice4
void
chercher ( int t[], int n, int aChercher, int * P )
{
int
indice = -1 ;
t[n]
= aChercher ;
do
indice++
;
while
(t[indice] != aChercher) ;
*P
= indice ;
}
Exemple
d'utilisation :
/*
Chercher un numéro donné dans un tableau des numéros
de
nbEmp employés : */
#define
MAX_EMP 1250
int
unNumero, numero[MAX_EMP] ;
int
nbEmp, indice ;
.......
printf("Quel
est le numéro de l'employé recherché ? ");
scanf("%d",
&unNumero);
chercher
( numero, nbEmp, unNumero, &indice) ;
if
(indice == nbEmp )
printf("Désolé!
on ne le trouve pas %d\n", unNumero);
else
{ printf("Son numéro : %d\n", numero[indice]);
printf("son
âge : %d\n", age [indice]);
etc
....
}
|
Exercice5
#define VRAI 1
#define FAUX 0
int
indice , mini, maxi, milieu , trouve ;
trouve = FAUX ; /* on ne trouve pas encore
*/
mini
= 0 ;
maxi
= N - 1 ; /* on examine tout le tableau */
while ( !trouve && (mini <=
maxi) ) {
milieu = ( mini + maxi ) / 2 ;
if ( aChercher < t[milieu] )
maxi = milieu - 1 ;
else
if ( aChercher > t[milieu] )
mini = milieu + 1 ;
else
trouve = VRAI ;
}
if (trouve) indice = milieu ;
else
printf("On ne le trouve pas!\n");
|
Exercice6
int
rang ;
char
* jours[7] = { "dimanche", "lundi", "mardi",
"mercredi",
"jeudi",
"vendredi", "samedi" };
for
( rang = 0 ; rang < 7 ; rang++)
printf("Journée
%d :
%s\n", rang+1, jours[rang]);
|