Exercices Corrigés En C – Les chaînes de caractères
La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec le langage C et programmation. Nous espérons que ces exercices vous aideront à améliorer vos compétences sur le langage C et programmation. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!
Vous pouvez lire notre tutoriel sur le langage C avant de résoudre les exercices suivants.
1. Écrire un programme en C pour saisir une chaîne de caractères et l’afficher.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! La chaîne saisie est: Hello, World!
#include <stdio.h>
#include <stdlib.h>
int main() {
/* Déclaration un tableau de caractères pour stocker
la chaîne de caractères */
char str[50];
printf("Entrer une chaîne de caractères: ");
/* Lire une chaîne de caractères à partir du clavier
en utilisant fgets() */
fgets(str, sizeof str, stdin);
// Afficher la chaîne de caractères saisie par l'utilisateur
printf("La chaîne saisie est: %s\n", str);
/* Renvoyer 0 pour indiquer que le programme
a été exécuté avec succès */
return 0;
}
2. Écrire un programme en C pour trouver la longueur d’une chaîne de caractères sans utiliser les fonctions de bibliothèque.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! La longueur de la chaîne est: 13
#include <stdio.h>
#include <stdlib.h>
int main() {
// Déclare une chaîne de caractères de taille 100
char str[100];
/* Initialiser une variable pour stocker la longueur
de la chaîne de caractères. */
int len = 0;
printf("Entrer une chaîne de caractères: ");
/* Lire une chaîne de caractères à partir du clavier
en utilisant fgets() */
fgets(str, sizeof str, stdin);
// Boucle pour calculer la longueur de la chaîne
while (str[len] != '\0') {
/* Incrémenter le compteur len jusqu'à ce que le terminateur
nul "\0" soit rencontré. */
len++;
}
printf("La longueur de la chaîne est: %d", len - 1);
/* Renvoyer 0 pour indiquer que le programme
a été exécuté avec succès */
return 0;
}
3. Écrire un programme en C pour séparer chaque caractère d’une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! Les caractères de la chaîne sont: H e l l o , W o r l d !
#include <stdio.h>
#include <stdlib.h>
int main() {
/* Déclare une chaîne de caractères de taille 100 */
char str[100];
/* Initialiser une variable pour stocker l'index
de la chaîne de caractères. */
int i = 0;
printf("Entrer une chaîne de caractères: ");
/* Lire une chaîne de caractères à partir du clavier
en utilisant fgets() */
fgets(str, sizeof str, stdin);
printf("Les caractères de la chaîne sont: \n");
/* Boucle pour afficher chaque caractère de la chaîne de caractères
jusqu'à ce que le terminateur nul '\0' soit rencontré. */
while (str[i] != '\0') {
printf("%c ", str[i]); // Afficher chaque caractère
i++; // Passer au caractère suivant de la chaîne
}
printf("\n");
/* Renvoyer 0 pour indiquer que le programme
a été exécuté avec succès */
return 0;
}
4. Écrire un programme en C pour afficher chaque caractère d’une chaîne de caractères dans l’ordre inverse.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! Les caractères de la chaîne en sens inverse sont: ! d l r o W , o l l e H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
/* Déclare une chaîne de caractères de taille 100 */
char str[100];
int len, i;
printf("Entrer une chaîne de caractères:");
/* Lire une chaîne de caractères à partir du clavier
en utilisant fgets() */
fgets(str, sizeof str, stdin);
len = strlen(str); // Calculer la longueur de la chaîne
printf("Les caractères de la chaîne en sens inverse sont: \n");
// Boucle pour afficher chaque caractère dans l'ordre inverse
for (i = len - 1; i >= 0; i--) {
// Afficher chaque caractère dans l'ordre inverse
printf("%c ", str[i]);
}
printf("\n");
return 0;
}
5. Écrire un programme en C pour compter le nombre total de mots dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello World Le nombre total de mots dans la chaîne est: 2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
/* Déclare une chaîne de caractères de taille 100 */
char str[100];
int i, nbr;
printf("Entrer une chaîne de caractères:");
/* Lire une chaîne de caractères à partir du clavier
en utilisant fgets() */
fgets(str, sizeof str, stdin);
i = 0; // Initialiser l'itérateur
/* Initialiser le nombre de mots à 1 (en supposant qu'il
existe au moins un mot dans la chaîne) */
nbr = 1;
/* Boucle pour compter les mots dans la chaîne */
while (str[i] != '\0') { // Boucle jusqu'à la fin de la chaîne
/* Vérifier si le caractère courant est un espace, une nouvelle
ligne ou un caractère de tabulation. */
if (str[i] == ' ' || str[i] == '\n' || str[i] == '\t') {
/* Incrémenter le nombre de mots lorsqu'un espace, une
nouvelle ligne ou une tabulation est trouvé. */
nbr++;
}
i++; // Passer au caractère suivant de la chaîne
}
printf("Le nombre total de mots dans la chaîne est: %d", nbr - 1);
return 0;
}
6. Écrire un programme en C pour comparer deux chaînes de caractères sans utiliser les fonctions de la bibliothèque.
Exemple de sortie:
Saisir la 1ère chaîne: alex Saisir la 2ème chaîne: alex Les chaînes sont égales.
#include <stdio.h>
// Fonction pour comparer deux chaînes de caractères
int comparer(char* s1, char* s2) {
int flag = 0;
/* Boucle pour comparer les caractères des chaînes jusqu'à ce que
le terminateur nul "\0" soit trouvé dans les deux chaînes. */
while (*s1 != '\0' || *s2 != '\0') {
// Vérifier si les caractères des deux chaînes sont égaux
if (*s1 == *s2) {
s1++; // Passer au caractère suivant de la première chaîne
s2++; // Passer au caractère suivant de la deuxième chaîne
} else if ((*s1 == '\0' && *s2 != '\0') || (*s1 != '\0' && *s2 == '\0') || *s1 != *s2) {
// Vérifier les cas où une chaîne se termine avant l'autre ou les cas où les caractères au même index ne sont pas égaux.
flag = 1; // Mettre le drapeau pour indiquer l'inégalité
break; // Sortir de la boucle si une inégalité est trouvée
}
}
// Retourne le drapeau indiquant l'égalité(0) ou l'inégalité(1)
return flag;
}
int main(void) {
char str1[100], str2[100];
int drapeau = 0;
printf("\nSaisir la 1ère chaîne: ");
fgets(str1, sizeof str1, stdin);
printf("Saisir la 2ème chaîne: ");
fgets(str2, sizeof str2, stdin);
drapeau = comparer(str1, str2); // comparer les chaînes
// Afficher le résultat de la comparaison en fonction du drapeau
if (drapeau == 0) {
printf("\nLes chaînes sont égales.\n");
} else if (drapeau == 1) {
printf("\nLes chaînes ne sont pas égales.");
}
return 0;
}
7. Écrire un programme en C pour compter le nombre total d’alphabets, de chiffres et de caractères spéciaux dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: 123 Hello, World! Nombre d'alphabets dans la chaîne est: 10 Nombre de chiffres dans la chaîne: 3 Nombre de caractères spéciaux dans la chaîne: 2
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char str[100];
/* Déclarer des variables pour les alphabets, les chiffres,
les caractères spéciaux et l'itération */
int alph, chiffre, spec, i;
alph = chiffre = spec = i = 0; // Initialiser les compteurs à zéro
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
/* Vérifie chaque caractère de la chaîne */
while (str[i] != '\0') {
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
alph++; // Incrémente si le caractère est un alphabet
} else if (str[i] >= '0' && str[i] <= '9') {
chiffre++; // Incrémente si le caractère est un chiffre
} else {
spec++; // Incrémente si le caractère est un caractères spéciaux
}
i++; // Passer au caractère suivant de la chaîne de caractères
}
printf("Nombre d'alphabets dans la chaîne est: %d\n", alph);
printf("Nombre de chiffres dans la chaîne: %d\n", chiffre);
printf("Nombre de caractères spéciaux dans la chaîne: %d", spec);
return 0;
}
8. Écrire un programme en C pour copier une chaîne de caractères dans une autre chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! Chaîne originale: Hello, World! Chaîne copiée: Hello, World! Nombre de caractères copiés est: 13
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char str1[100], str2[100];
int i;
printf("Entrer une chaîne de caractères: ");
fgets(str1, sizeof str1, stdin);
/* Copie la chaîne de caractères str1 dans str2, caractère par
caractère */
i = 0;
// Boucle jusqu'à la fin de la première chaîne
while (str1[i] != '\0') {
str2[i] = str1[i]; // Copier chaque caractère de str1 dans str2
i++; // Passer au caractère suivant de la chaîne
}
// S'assurer que la deuxième chaîne est terminée par NULL
str2[i] = '\0'; // Ajouter le terminateur NULL à la fin de str2
printf("\nChaîne originale: %s\n", str1);
printf("Chaîne copiée: %s\n", str2);
printf("Nombre de caractères copiés est: %d", i);
return 0;
}
9. Ecrivez un programme en C pour compter le nombre total de voyelles ou de consonnes dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello World Le nombre total de voyelles dans la chaîne est: 3 Le nombre total de consonnes dans la chaîne est: 7
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char str[100];
int len, voy, cons, i;
printf("Entrer une chaîne de caractères:");
fgets(str, sizeof str, stdin);
voy = 0;
cons = 0;
len = strlen(str);
// Boucle pour vérifier chaque caractère de la chaîne
for (i = 0; i < len; i++) {
/* Vérifier si le caractère est une voyelle(en minuscules et
en majuscules) */
if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u' || str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U') {
/* Incrémenter le nombre de voyelles si le caractère est
une voyelle */
voy++;
}
/* Vérifier si le caractère est un alphabet (minuscules et
majuscules) */
else if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
/* Incrémenter le nombre de consonnes si le caractère est
un alphabet mais pas une voyelle */
cons++;
}
}
printf("\nLe nombre total de voyelles dans la chaîne est: %d\n", voy);
printf("Le nombre total de consonnes dans la chaîne est: %d", cons);
return 0;
}
10. Écrire un programme en C pour trouver le nombre maximum de caractères dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello World Le caractère qui a une fréquence plus élevée est 'l' Nombre de répétitions: 3
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
//Déclare un tableau de caractères pour stocker la chaîne de caractères
char str[100];
//Déclarer un tableau pour stocker la fréquence des caractères
int freq_chr[255];
//Déclarer les variables pour l'itération et la recherche de la fréquence maximale
int i = 0, max;
//Variable contenant la valeur ASCII d'un caractère
int ascii;
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
for (i = 0; i < 255; i++) {
//Initialiser la fréquence de tous les caractères à zéro
freq_chr[i] = 0;
}
/* Lire la fréquence de chaque caractère */
i = 0;
// Boucle jusqu'à la fin de la chaîne
while (str[i] != '\0') {
// Récupérer la valeur ASCII du caractère courant
ascii = (int)str[i];
// Incrémente le nombre de fréquences pour ce caractère
freq_chr[ascii] += 1;
i++;
}
max = 0;
for (i = 0; i < 255; i++) {
if (i != 32) { // Exclure le caractère espace (' ')
if (freq_chr[i] > freq_chr[max]) {
max = i; // Actualiser max avec la fréquence maximale
}
}
}
printf("Le caractère qui a une fréquence plus élevée est '%c'\n", max);
printf("Nombre de répétitions: %d", freq_chr[max]);
return 0;
}
11. Écrire un programme C pour trier un tableau de chaînes de caractères dans l'ordre croissant.
Exemple de sortie:
Entrer une chaîne de caractères: waytolearnx Après le tri: aaelnortwxy
#include <stdio.h>
#include <string.h>
int main() {
//Déclarer un tableau de caractères et une variable temporaire 'ch'
char str[100], ch;
//Déclarer des variables pour l'itération et longueur de la chaîne
int i, j, len;
printf("Entrer une chaîne de caractères:");
fgets(str, sizeof str, stdin);
len = strlen(str); //Calculer la longueur de la chaîne
/* Tri à l'aide de l'algorithme de tri à bulles */
for (i = 1; i < len; i++) {
for (j = 0; j < len - i; j++) {
/* Vérifier si le caractère courant est plus grand que
le suivant */
if (str[j] > str[j + 1]) {
// Échanger les caractères s'ils sont en désordre
ch = str[j];
str[j] = str[j + 1];
str[j + 1] = ch;
}
}
}
printf("Après le tri: %s", str);
return 0;
}
12. Écrire un programme en C pour lire un certain nombre de chaîne de caractères à partir du clavier et les trier à l'aide du tri à bulles.
Exemple de sortie:
Entrer le nombre de chaînes : 3 Entrez les 3 chaînes de caractères: bob alex emily Les chaînes de caractères après le tri: alex bob emily
#include <stdio.h>
#include <string.h>
int main() {
char nom[25][50], tmp[25];
int n, i, j;
printf("Entrer le nombre de chaînes : ");
scanf("%d", &n);
printf("Entrez les %d chaînes de caractères: \n", n);
for (i = 0; i <= n; i++) {
fgets(nom[i], sizeof(nom[i]), stdin);
}
/* Tri à bulles */
for (i = 1; i <= n; i++) {
for (j = 0; j <= n - i; j++) {
// Comparer les chaînes de caractères adjacentes
if (strcmp(nom[j], nom[j + 1]) > 0) {
// Échanger les chaînes de caractères
strcpy(tmp, nom[j]);
strcpy(nom[j], nom[j + 1]);
strcpy(nom[j + 1], tmp);
}
}
}
printf("Les chaînes de caractères après le tri: \n");
for (i = 0; i <= n; i++) {
printf("%s\n", nom[i]);
}
return 0;
}
13. Ecrire un programme en C pour extraire une sous-chaîne d'une chaîne donnée.
Exemple de sortie:
Entrer la chaîne: welcome to waytolearnx Entrer la position de départ de l'extraction: 8 Entrer la longueur de la sous-chaîne: 3 La sous-chaîne extraite de la chaîne est: " to"
#include <stdio.h>
int main() {
char str[100], soustr[100];
//Variables pour la position, la longueur et un compteur
int pos, l, c = 0;
printf("Entrer la chaîne: ");
fgets(str, sizeof str, stdin);
printf("Entrer la position de départ de l'extraction:");
scanf("%d", &pos);
printf("Entrer la longueur de la sous-chaîne:");
scanf("%d", &l);
// Extraire la sous-chaîne
while (c < l) {
/* Copie les caractères à partir de la position spécifiée dans
la sous-chaîne */
soustr[c] = str[pos + c - 1];
c++;
}
//Ajouter le terminateur null pour marquer la fin de la sous-chaîne
soustr[c] = '\0';
printf("La sous-chaîne extraite de la chaîne est: \" %s\"", soustr);
return 0;
}
14. Écrire un programme C pour vérifier si une sous-chaîne est présente dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx Saisir la sous-chaîne à rechercher: to La sous-chaîne existe dans la chaîne.
#include <stdio.h>
int main()
{
char str[80], soustr[10];
int count1 = 0, count2 = 0, i, j, drapeau;
printf("Entrer une chaîne de caractères:");
gets(str);
printf("Saisir la sous-chaîne à rechercher:");
gets(soustr);
// Calculer la longueur de la chaîne principale
while (str[count1] != '\0')
count1++;
// Calculer la longueur de la sous-chaîne
while (soustr[count2] != '\0')
count2++;
// Vérifier si la sous-chaîne existe dans la chaîne principale
for (i = 0; i <= count1 - count2; i++)
{
for (j = i; j < i + count2; j++)
{
/* Initialiser le drapeau pour la correspondance
de la sous-chaîne */
drapeau = 1;
if (str[j] != soustr[j - i])
{
/* Mettre le drapeau à zéro si les caractères ne
correspondent pas */
drapeau = 0;
break;
}
}
// Quitter la boucle si la sous-chaîne est trouvée
if (drapeau == 1)
break;
}
if (drapeau == 1)
printf("La sous-chaîne existe dans la chaîne.");
else
printf("La sous-chaîne n'existe pas dans la chaîne.");
return 0;
}
15. Écrire un programme en C pour lire une phrase et remplacer les caractères minuscules par des majuscules et vice versa.
Exemple de sortie:
Entrer une chaîne de caractères: Welcome To Waytolearnx Après le changement de Case, la chaîne de caractères est: wELCOME tO wAYTOLEARNX
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char str[100];
int len, ch, i;
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
i = strlen(str);
len = i; /* indique le nombre de caractères dans une phrase */
printf("Après le changement de Case, la chaîne de caractères est: ");
for (i = 0; i < len; i++) {
/* Vérifier si le caractère est une minuscule, puis le convertir
en majuscule, sinon le convertir en minuscule. */
ch = islower(str[i]) ? toupper(str[i]) : tolower(str[i]);
putchar(ch); // Affiche le caractère modifié
}
return 0;
}
16. Ecrivez un programme en C pour trouver le nombre de fois le mot "on" apparaît dans la chaîne donnée.
Exemple de sortie:
Entrer une chaîne de caractères: on peut dire on a raison qu'on va arrêter. La fréquence du mot "on" est: 3
#include <stdio.h>
#include <string.h>
int main() {
int len = 0, i, freq = 0, o, n, espace;
char str[100];
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
len = strlen(str); // Calculer la longueur de la chaîne
/* Compte la fréquence du mot "on" avec un espace à la fin du mot */
for (i = 0; i <= len - 3; i++) {
/* Vérifier si les caractères forment le motif "on"
(sans tenir compte de la casse) */
o = (str[i] == 'o' || str[i] == 'O');
n = (str[i + 1] == 'n' || str[i + 1] == 'N');
espace = (str[i + 3] == ' ' || str[i + 3] == '\0');
// Incrémenter la fréquence si "on" est trouvé
if ((o && n && espace) == 1)
freq++;
}
printf("La fréquence du mot 'on' est: %d", freq);
return 0;
}
17. Écrire un programme en C pour supprimer tous les caractères, sauf les alphabets.
Exemple de sortie:
Entrer une chaîne de caractères: w@ytolearnx1992 Après avoir supprimé les caractères: wytolearnx
#include <stdio.h>
#include <string.h>
int main() {
char str[150];
int i, j;
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
for (i = 0; str[i] != '\0'; ++i) {
while (!((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z' || str[i] == '\0'))){
/* Boucle pour supprimer les caractères non alphabétiques
de la chaîne de caractères */
for (j = i; str[j] != '\0'; ++j) {
/* Décaler les caractères vers la gauche pour supprimer
les caractères non alphabétiques */
str[j] = str[j + 1];
}
// Fixer la fin de la chaîne après la suppression
str[j] = '\0';
}
}
printf("Après avoir supprimé les caractères: %s", str);
return 0;
}
18. Ecrivez un programme en C pour trouver la fréquence des caractères.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx Saisir le caractère pour trouver la fréquence: o La fréquence de 'o' est: 3
#include <stdio.h>
int main() {
char str[500], chr;
int i, compteur = 0;
printf("Entrer une chaîne de caractères:");
fgets(str, sizeof str, stdin);
printf("Saisir le caractère pour trouver la fréquence:");
scanf("%c", &chr);
for (i = 0; str[i] != '\0'; ++i) {
/* Vérifier si le caractère correspond au caractère actuel
de la chaîne de caractères */
if (chr == str[i]) {
//Incrémente le compteur si le caractère correspond
++compteur;
}
}
printf("La fréquence de '%c' est: %d", chr, compteur);
return 0;
}
19. Écrire un programme en C pour concaténer deux chaînes de caractères.
Exemple de sortie:
Entrer la première chaîne: Hello Entrer la deuxième chaîne: World! Après concaténation, la chaîne est: Hello World!
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100], i, j, len1, len2, len3;
printf("Entrer la première chaîne: ");
fgets(str1, sizeof str1, stdin);
printf("Entrer la deuxième chaîne: ");
fgets(str2, sizeof str2, stdin);
len1 = strlen(str1); // Récupère la longueur de str1
len2 = strlen(str2); // Récupère la longueur de str2
for (i = 0; i < len1 - 1; ++i);
str1[i] = ' '; /* Ajouter un espace à la chaîne str1. */
i++; /* Incrémenter i de 1 pour l'espace vide */
for (j = 0; j < len2 - 1; ++j, ++i) {
// Concaténer str2 à str1 après l'espace ajouté
str1[i] = str2[j];
}
len3 = strlen(str1); //Récupère la longueur de la chaîne concaténée
printf("Après concaténation, la chaîne est: ");
for (i = 0; i < len3; ++i) { // Afficher la chaîne concaténée
printf("%c", str1[i]);
}
return 0;
}
20. Écrire un programme en C pour trouver les mots les plus grands et les plus petits dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Voici une description simple Le mot le plus grand est 'description' et le mot le plus petit est 'une'.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[100], mot[20], max[20], min[20], c;
int i = 0, j = 0, drapeu = 0;
printf("Entrer une chaîne de caractères:");
i = 0;
/* Lire caractère par caractère jusqu'à la nouvelle ligne ou la fin
du tableau */
while ((c = getchar()) != '\n' && i < sizeof(str) - 1) {
// Vérifier la présence de caractères alphanumériques et d'espaces
if (isalnum(c) || isspace(c)) {
// Stocker les caractères dans le tableau str
str[i++] = c;
}
}
str[i] = '\0'; // Terminer la chaîne par le caractère nul
/* Parcourir la chaîne pour trouver les mots les plus grands
et les plus petits */
for (i = 0; i < strlen(str); i++) {
// Vérifier la présence de caractères alphanumériques
while (i < strlen(str) && !isspace(str[i]) && isalnum(str[i])) {
/* Stocker les caractères dans le tableau mot jusqu'à ce qu'un
espace ou un caractère non alphanumérique soit trouvé. */
mot[j++] = str[i++];
}
if (j != 0) { // Vérifier s'il y a un mot
mot[j] = '\0'; // Terminer le mot par le caractère nul
// Vérifier si c'est le premier mot rencontré
if (!drapeu) {
// Mettre un drapeau pour indiquer le premier mot
drapeu = !drapeu;
// Copier le premier mot dans max et min
strcpy(max, mot);
strcpy(min, mot);
}
// Comparez les longueurs de mot pour trouver le maximum
if (strlen(mot) > strlen(max)) {
// Actualiser le max si le mot actuel est plus long
strcpy(max, mot);
}
// Comparez les longueurs de mot pour trouver minimum
if (strlen(mot) < strlen(min)) {
// Actualiser min si le mot actuel est plus court
strcpy(min, mot);
}
// Remettre à zéro l'index du tableau mot pour le mot suivant
j = 0;
}
}
printf("Le mot le plus grand est '%s' et le mot le plus petit est '%s'.", max, min);
return 0;
}
21. Écrire un programme en C pour convertir une chaîne de caractères en majuscules.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx WELCOME TO WAYTOLEARNX
#include <stdio.h>
#include <ctype.h>
int main() {
int i=0; //Variable pour suivre la position dans la chaîne
char chr; // Variable pour stocker chaque caractère de la chaîne
char str[100]; // Tableau pour stocker la chaîne saisie
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
// Parcourir la chaîne jusqu'à ce que le caractère null soit rencontré
while (str[i]) {
chr = str[i]; // Récupérer chaque caractère de la chaîne
/* Convertir le caractère en majuscule avec toupper()
et l'afficher */
putchar(toupper(chr));
i++; // Passer au caractère suivant de la chaîne
}
return 0;
}
22. Écrire un programme en C pour convertir une chaîne de caractères en minuscules.
Exemple de sortie:
Entrer une chaîne de caractères: WELCOME TO WAYTOLEARNX welcome to waytolearnx
#include <stdio.h>
#include <ctype.h>
int main() {
int i=0; //Variable pour suivre la position dans la chaîne
char chr; // Variable pour stocker chaque caractère de la chaîne
char str[100]; // Tableau pour stocker la chaîne saisie
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
// Parcourir la chaîne jusqu'à ce que le caractère null soit rencontré
while (str[i]) {
chr = str[i]; // Récupérer chaque caractère de la chaîne
/* Convertir le caractère en minuscules avec tolower()
et l'afficher */
putchar(tolower(chr));
i++; // Passer au caractère suivant de la chaîne
}
return 0;
}
23. Écrire un programme en C pour vérifier si un caractère est un chiffre hexadécimal ou non.
Exemple de sortie:
Entrer un caractère: A Le caractère saisi est un chiffre hexadécimal.
#include <stdio.h>
#include <ctype.h>
int main() {
char chr; //Variable pour stocker le caractère saisi
printf("Entrer un caractère: ");
scanf("%c", &chr);
// Vérifier si le caractère saisi est un chiffre hexadécimal
if (isxdigit(chr)) {
printf("Le caractère saisi est un chiffre hexadécimal.");
} else {
printf("Le caractère saisi n'est pas un chiffre hexadécimal.");
}
return 0;
}
24. Ecrivez un programme en C pour vérifier si une lettre est majuscule ou non.
Exemple de sortie:
Entrer un caractère: a La lettre saisie n'est pas une lettre MAJUSCULE.
#include <stdio.h>
#include <ctype.h>
int main() {
char chr;
printf("Entrer un caractère: ");
scanf("%c", &chr);
// Vérifier si le caractère saisi est une lettre majuscule
if (isupper(chr)) {
printf("La lettre saisie est une lettre MAJUSCULE.");
} else {
printf("La lettre saisie n'est pas une lettre MAJUSCULE.");
}
return 0;
}
25. Écrire un programme en C pour remplacer les espaces d'une chaîne de caractères par un caractère donné.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx Entrer le caractère de remplacement: _ Après le remplacement: welcome_to_waytolearnx
#include <stdio.h>
#include <ctype.h>
int main() {
int i_char;
char chr;
int i = 0;
char str[100];
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
printf("Entrer le caractère de remplacement: ");
scanf("%c", &chr);
printf("Après le remplacement: ", chr);
while (str[i]) {
i_char = str[i]; // Récupérer chaque caractère de la chaîne
/* Vérifier si le caractère est un espace et le remplacer
par le caractère spécifié */
if (isspace(i_char)) {
i_char = chr;
}
putchar(i_char); // Afficher le caractère
i++; // Passer au caractère suivant de la chaîne
}
return 0;
}
26. Écrire un programme en C pour compter le nombre de caractères de ponctuation présents dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hi, welcome, to waytolearnx. Le nombre de caractères de ponctuation présents dans la chaîne est: 3
#include <stdio.h>
#include <ctype.h>
int main() {
int i = 0; // Compteur pour itérer à travers la chaîne
int p = 0; // Compteur de caractères de ponctuation
char str[100]; // Tableau pour stocker la chaîne saisie
printf("Entrer une chaîne de caractères: ");
fgets(str, sizeof str, stdin);
// Parcourir la chaîne et compter les caractères de ponctuation
while (str[i]) {
if (ispunct(str[i])) {
//Incrémente le compteur si le caractère est une ponctuation
p++;
}
i++; // Passer au caractère suivant de la chaîne
}
printf("Le nombre de caractères de ponctuation présents dans la chaîne est: %d", p);
return 0;
}
27. Ecrivez un programme en C pour n'afficher que la chaîne de caractères précédant le caractère de retour à la ligne.
Exemple de sortie:
"Hi\n welcome\n to waytolearnx.\n" => Hi
#include <stdio.h>
#include <ctype.h>
int main() {
int i = 0;
char str[] = "Hi\n welcome\n to waytolearnx.\n";
/* Parcourt la chaîne et affiche les caractères jusqu'à ce qu'un
caractère de retour à la ligne ou la fin du chaîne soit rencontrée*/
while (isprint(str[i])) {
putchar(str[i]); // Afficher le caractère
i++; // Passer au caractère suivant de la chaîne
if (str[i] == '\n') {
break; // Quitter la boucle si le caractère \n est rencontré
}
}
return 0;
}
28. Ecrivez un programme en C pour vérifier si une lettre est minuscule ou non.
Exemple de sortie:
Entrer un caractère: A La lettre saisie n'est pas une lettre minuscule.
#include <stdio.h>
#include <ctype.h>
int main() {
char chr;
printf("Entrer un caractère: ");
scanf("%c", &chr);
// Vérifier si le caractère saisi est une lettre minuscule
if (islower(chr)) {
printf("La lettre saisie est une lettre minuscule.");
} else {
printf("La lettre saisie n'est pas une lettre minuscule.");
}
return 0;
}
29. Écrire un programme en C pour vérifier si un caractère est un chiffre ou non.
Exemple de sortie:
Entrer un caractère: 5 Le caractère saisi est un chiffre.
#include <stdio.h>
#include <ctype.h>
int main() {
char chr;
printf("Entrer un caractère: ");
scanf("%c", &chr);
// Vérifier si le caractère saisi est un chiffre
if (isdigit(chr)) {
printf("Le caractère saisi est un chiffre.");
} else {
printf("Le caractère saisi n'est pas un chiffre.");
}
return 0;
}
30. Écrire un programme en C pour découper les chaînes de caractères en mots en fonction de l'espace.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx Les mots après avoir été séparé par un espace est: welcome to waytolearnx
#include <stdio.h>
#include <ctype.h>
int main() {
char str1[100];
// Tableau 2D pour stocker les chaînes de caractères découpées
char tab[10][10];
int i, j, k;
printf("Entrer une chaîne de caractères: ");
fgets(str1, sizeof str1, stdin);
j = 0; // Initialiser l'index des colonnes du tab
k = 0; // Initialiser le nombre de mots
// Parcourir chaque caractère de la chaîne saisie
for (i = 0; i <= (strlen(str1)); i++) {
// Si un espace ou NULL est trouvé, assigner NULL dans tab[k]
if (str1[i] == ' ' || str1[i] == '\0') {
tab[k][j] = '\0'; // Terminer le mot par un nul
k++; // Passer au mot suivant
j = 0; // Remettre l'index de la colonne à 0 pour le mot suivant
} else {
tab[k][j] = str1[i]; // Stocker le caractère dans tab
j++; // Passer au caractère suivant du mot
}
}
printf("Les mots après avoir été séparé par un espace est:\n");
for (i = 0; i < k; i++) {
printf(" %s\n", tab[i]);
}
return 0;
}
31. Écrire un programme C pour trouver le caractère répété dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: raroriri Le caractère répétitif est: r i
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int count;
printf("Entrer une chaîne de caractères: ");
scanf("%[^\n]*c",str);
printf("Le caractère répétitif est: \n");
//Compter chaque caractère présent dans la chaîne
for(int i = 0; i < strlen(str); i++) {
//Réactualise le compteur à 1 pour chaque nouveau caractère
count = 1;
for(int j = i+1; j < strlen(str); j++) {
if(str[i] == str[j] && str[i] != ' ') {
count++;
//Mettre str[j] à 0 pour éviter d'afficher le caractère visité
str[j] = '0';
}
}
//Un caractère est considéré comme dupliqué si le nombre est supérieur à 1
if(count > 1 && str[i] != '0')
printf("%c\n", str[i]);
}
return 0;
}
32. Écrire un programme C pour compter chaque caractère d'une chaîne donnée.
Exemple de sortie:
Entrer une chaîne de caractères: raroriri La fréquence de a est 1 La fréquence de i est 2 La fréquence de o est 1 La fréquence de r est 4
#include <stdio.h>
int main()
{
char str[100] = "raroriri";
int i;
int freq[256] = {0};
//Calculer la fréquence de chaque caractère.
for(i = 0; str[i] != '\0'; i++)
{
freq[str[i]]++;
}
//Afficher la fréquence de chaque caractère.
for(i = 0; i < 256; i++)
{
if(freq[i] != 0)
{
printf("La fréquence de %c est %d\n", i, freq[i]);
}
}
return 0;
}
33. Écrire un programme C pour convertir les voyelles en majuscules dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: waytolearnx Après la conversion: wAytOlEArnx
#include <stdio.h>
int main() {
char str[255];
int i;
printf("Entrer une chaîne de caractères: ");
gets(str);
i = 0;
/* Parcourir la chaîne jusqu'à ce que la fin de la chaîne ('\0')
soit atteinte */
while (str[i] != '\0') {
/* Convertir les voyelles minuscules en majuscules en soustrayant
32 à leur valeur ASCII. */
if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u') {
str[i] = str[i] - 32;
}
i++; // Passer au caractère suivant de la chaîne
}
printf("Après la conversion: ");
puts(str);
return 0;
}
34. Écrire un programme C pour convertir les voyelles en majuscules dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: WAYTOLEARNX Après la conversion: WaYToLeaRNX
#include <stdio.h>
int main() {
char str[255];
int i;
printf("Entrer une chaîne de caractères: ");
gets(str);
i = 0;
/* Parcourir la chaîne jusqu'à ce que la fin de la chaîne ('\0')
soit atteinte */
while (str[i] != '\0') {
/* Convertir les voyelles majuscules en minuscules en ajoutant
32 à leur valeur ASCII.*/
if (str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U') {
str[i] = str[i] + 32;
}
i++; // Passer au caractère suivant de la chaîne
}
printf("Après la conversion: ");
puts(str);
return 0;
}
35. Ecrivez un programme C pour remplacer chaque lettre minuscule en lettre majuscule.
Exemple de sortie:
Entrer une chaîne de caractères: WayToLearnX Après la conversion: WAYTOLEARNX
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Fonction pour remplacer les lettres minuscules par majuscules
char * convert(char * text) {
char *tt = text;
// Parcourir la chaîne
while(*tt != '\0') {
/* Si le caractère courant est une lettre minuscule, il est
converti en majuscule */
if (*tt >= 'a' && *tt <= 'z') {
*tt = *tt + 'A' - 'a'; // Conversion en majuscules
}
tt++;
}
return text;
}
int main() {
char text[50] = "WayToLearnX";
printf("Après la conversion: %s", convert(text));
return 0;
}
36. Écrire un programme en C qui lit un caractère et détermine si c'est une lettre ou non, dans le cas d'une lettre, il indique si c'est une minuscule ou une majuscule.
Exemple de sortie:
Donnez une lettre: a C'est une lettre Minuscule Donnez une lettre: A C'est une lettre Majuscule Donnez une lettre: 5 C'est pas une lettre!
#include <stdio.h>
int main()
{
char l;
printf("Donnez une lettre:");
scanf("%c",&l);
if (l >= 65 && l <= 90){
printf("C'est une lettre Majuscule");
}
else {
if (l >= 97 && l <= 122)
printf("C'est une lettre Minuscule");
else
printf("C'est pas une lettre!");
}
return 0;
}
