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; 
}

Pour résoudre ce problème, il faut connaître la valeur ASCII d'un caractère. C'est la façon la plus simple de déterminer si un caractère est alphabétique ou non. Ce problème est résolu à l'aide des détails suivants:

  • Les lettres majuscules (A-Z) se situent dans la plage 65-91 de la valeur ASCII.
  • Les lettres minuscules (a-z) se situent dans la plage 97-122 de la valeur ASCII.
  • Toute valeur ASCII différente est un caractère non alphabétique.
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *