Programmation en langage C: Exercices corrigés sur les chaînes de caractères

Page 1 sur 5Lecteur de document UniversityLib

Programmation en langage C: Exercices corrigés sur les chaînes de caractères

Computer Science - Programming in C · notes

Voir tous les documents en programmation

École Supérieure de Technologie

et d’Informatique

A.U. 2011/2012

Programmation en langage C

Exercices corrigéssur les chaines de caractères (5 pages)

LA inf – LA SIL – LA ARS 1ère année

Exercice 1

(cid:1) Écrire un programme qui vérifie si une chaîne est un palindrome.

(cid:2) En utilisant le formalisme tableau

(cid:2) En utilisant le formalisme pointeur

#include<stdio.h>

#include<string.h>

int palindrome (char *ch)

{

int pal=1;

char *fin;

fin=ch+strlen(ch)-1;

printf("%c \n", *fin);

for( ; ch<fin && (pal==1); ch++, fin--)

if ( ch != fin ) pal=0;

return pal;

}

void main()

{

char ch[30];

int res;

puts("saisir une chaine");

gets(ch);

res= palindrome(ch);

if (res==1) printf("palindrome");

else printf (" non palindrome");

}

Exercice 2 :

Ecrire un programme qui lit une ligne de texte (ne dépassant pas 200 caractères) la mémorise dans

une variable TXT et affiche ensuite:

a) la longueur L de la chaîne.

b) le nombre de 'e' contenus dans le texte.

c) toute la phrase à rebours, sans changer le contenu de la variable TXT.

d) toute la phrase à rebours, après avoir inversé l'ordre des caractères dans TXT:

exemple :

saisir une chaine

azeet heem

Mme Wiem Yaiche Elleuch Exercices corrigés chaines de caractères

Publicité

Page 1

la taille de la chaine est 10

le nombre de e est 4

affichage a rebours sans changement

meeh teeza

affichage a rebours apres changement

meeh teeza

#include<stdio.h>

#include<string.h>

int nombre_e(char *ch)

{

char *p;

int nb_e=0;

do

{

p=strchr(ch,'e');

if(p!=NULL)

{

nb_e++;

ch=p+1;

}

}

while(p!=NULL);

return nb_e;

}

void afficher_rebours (char *ch)

{

char *p;

for (p=ch+strlen (ch)-1; p>=ch; p--)

printf("%c", *p);

}

void inverser(char *ch)

{

char debut, fin;

char aux;

for(debut=ch, fin=ch+strlen(ch)-1 ; debut<fin ; debut ++, fin--)

{

aux=*debut;

debut=fin;

*fin=aux;

}

Mme Wiem Yaiche Elleuch Exercices corrigés chaines de caractères

Page 2

Publicité

}

void main()

{

char ch[30];

int l, nb_e;

puts("saisir une chaine");

gets(ch);

l=strlen(ch);

printf("la taille de la chaine est %d \n",l);

nb_e= nombre_e(ch);

printf("le nombre de e est %d \n", nb_e);

printf("\n affichage a rebours sans changement \n");

afficher_rebours (ch);

printf("\n affichage a rebours apres changement \n");

inverser (ch);

puts(ch);

}

Exercice 3 :

Écrire un programme qui lit un texte ch (de moins de 200 caractères) et qui supprime toutes les

occurrences d’un caractère d’une chaine. Les modifications se feront dans la même variable ch.

Exemple :

saisir une chaine azeeer geeeek

saisir un caractere e

azr gk

#include<stdio.h>

#include<string.h>

void saisir_caractere (char * k)

{

printf("saisir un caractère ");

scanf("%c", k);

}

void supprimer (char *ch, char k)

{

char *p;

do

{

p=strchr(ch,k);

if(p) strcpy(p, p+1);

Mme Wiem Yaiche Elleuch Exercices corrigés chaines de caractères

Page 3

}

while (p);

}

Publicité

void main()

{

char ch[50], k;

printf("\n saisir une chaine ");

gets(ch);

saisir_caractere(&k);

supprimer (ch,k);

puts (ch);

}

Exercice 4 :

Écrire un programme qui lit un texte ch (de moins de 200 caractères) et qui remplacer une chaine par

une autre de même taille. Les modifications se feront dans la même variable ch.

Exemple

saisir une chaine bonjour bonjour

saisir mot1 jour

saisir mot2 de meme taille XXXX

bonXXXX bonXXXX

#include<stdio.h>

#include<string.h>

void modifier (char ch, char mot1, char *mot2)

{

char *p;

do

{

p=strstr(ch,mot1);

if(p) strncpy(p, mot2, strlen(mot1));

}

while (p);

}

void main()

{

char ch[50], mot1[20], mot2[20];

printf("\n saisir une chaine ");

gets(ch);

printf("\n saisir mot1 ");

gets(mot1);

printf("\n saisir mot2 de meme taille ");

gets(mot2);

modifier (ch,mot1, mot2);

puts (ch);

}

Mme Wiem Yaiche Elleuch Exercices corrigés chaines de caractères

Page 4

Publicité

Exercice 5 :

Écrire un programme qui lit un texte ch (de moins de 200 caractères) et qui remplace une chaine par

une autre de taille différente. Les modifications se feront dans la même variable ch.

Exemple

saisir une chaine bonjour bonjour

saisir mot1 jour

saisir mot2 de taille differente XXXXXX

bonXXXXXX bonXXXXXX

#include<stdio.h>

#include<string.h>

void modifier (char ch, char mot1, char *mot2)

{

char aide[20];

char *p;

do

{

p=strstr(ch,mot1);

if(p)

{

strcpy(aide, p+strlen(mot1));

strncpy(p, mot2, strlen(mot2));

strcpy(p+strlen(mot2), aide);

}

}

while (p);

}

void main()

{

char ch[50], mot1[20], mot2[20];

printf("\n saisir une chaine ");

gets(ch);

printf("\n saisir mot1 ");

gets(mot1);

printf("\n saisir mot2 de taille différente ");

gets(mot2);

modifier (ch,mot1, mot2);

puts (ch);

}

Mme Wiem Yaiche Elleuch Exercices corrigés chaines de caractères

Page 5