Exercices Corrigés En C – Boucle while

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 qui affiche 10 fois « Hello ». En utilisant la boucle « while ».

Exemple de sortie:

Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
#include <stdio.h>

int main()
{
	int i=1;  
	while(i <= 10 ) { 
		printf("Hello\n");
			i++; 
	}
	return 0;
}

Dans ce programme, la boucle while continuera à s'exécuter tant que la variable i est inférieure ou égale à 10. À l'intérieur de la boucle, le texte est affiché, puis la variable i est incrémentée de 1 jusqu'à ce que la condition ne soit plus remplie.

 
 

2. Ecrivez un programme en C qui calcule la somme de 1 à 10. En utilisant la boucle "while".

Indication:

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

Exemple de sortie:

La somme de 1 à 10 est 55
#include <stdio.h>

int main()
{
	int i=1, sum=0;  
	while(i <= 10){ 
	   sum = sum + i;
	   i++;  
	}
   
	printf("La somme de 1 à 10 est: %d\n", sum);
	return 0; 
}

Dans la boucle while ci-dessus, la variable i est initialisée à 1 et la boucle se poursuit tant que i est inférieur ou égal à 10. À chaque itération de la boucle, la variable sum s'additionne à la valeur de i.

Enfin, la boucle incrémente la valeur de i de 1, et le processus se répète jusqu'à ce que la condition i <= 10 ne soit plus vraie. Dans ce cas on affiche le message "La somme de 1 à 10 est: 55".

 
 

3. Ecrivez un programme en C qui calcule la somme de 1 à N, où N est saisi par l'utilisateur. En utilisant la boucle "while".

Indication:

1 + 2 + 3 + 4 + 5 + 6 + 7 = 28

Exemple de sortie:

Entrer un nombre: 7
La somme de 1 à 7 est 28
#include <stdio.h>

int main()
{
	int i=1,sum=0,n;  
	
	printf("Entrer un nombre:");
	scanf ("%d",&n);
	
	while (i <= n) { 
		sum = sum + i;
		i++;  
	}
	
	printf("la somme de 1 à %d est: %d\n",n,sum);
	return 0; 
}

La boucle while est itérée n fois. À chaque itération, la valeur de i est ajoutée à la somme sum et i est incrémenté de 1.

 
 

4. Écrire un programme en C permettant de calculer le plus grand commun diviseur (PGCD) entre deux nombres entiers entrés par l'utilisateur. En utilisant la boucle "while".

Exemple:

n1=18 et n2=45
PGCD(18, 45) = 9

Exemple de sortie:

Entrer deux nombres: 18  45
Le PGCD est : 9
#include <stdio.h>

int main()
{
	int n1,n2,pgcd,i=1; 
	
	printf("Entrer un nombre:");
	scanf("%d",&n1);
	printf("Entrer un nombre:");
	scanf("%d",&n2);

	while(i<=n1 && i<=n2){
		if(n1%i==0 && n2%i==0){
			pgcd = i; 
		}
		i++;
	}
	printf("Le PGCD de %d et %d est:) = %d",n1,n2,pgcd);

	return 0; 
}

Dans ce programme, deux nombres entiers entrés par l'utilisateur sont stockés dans les variables n1 et n2. Ensuite, la boucle while est itérée jusqu'à ce que i soit inférieur à n1 et n2.

A chaque itération, si n1 et n2 sont exactement divisibles par i, la valeur de i est affectée à la variable "pgcd".

Lorsque la boucle while est terminée, le plus grand diviseur commun de deux nombres est stocké dans la variable "pgcd".

 
 

5. Ecrire un programme en C qui compte le nombre de chiffres dans un nombre saisi par l'utilisateur.

Exemple de sortie:

Donner un nombre: 9876
Le nombre de chiffres est 4
#include <stdio.h>

int main()
{
	int n,i=1;   
	printf("Donner un nombre:");
	scanf("%d",&n);   
  
	while(n/10 != 0){
		n = n/10;  
		i = i+1;
	}
	printf("Le nombre de chiffres est %d",i);    

	return 0; 
}

Le programme divise le nombre saisi par l'utilisateur par 10 dans la boucle while jusqu'à ce que le résultat atteigne zéro. Le nombre d'itérations correspondra au nombre de chiffres.

L'entier saisi par l'utilisateur est stocké dans la variable n. Ensuite, la boucle while est itérée jusqu'à ce que la condition (n/10 != 0) soit évaluée à 0 (False).

  • Après la première itération, la valeur de n est de 987 et le compteur est incrémenté à 1.
  • Après la deuxième itération, la valeur de n sera de 98 et le compteur sera incrémenté à 2.
  • Après la troisième itération, la valeur de n sera de 9 et le compteur sera incrémenté à 3.
  • Après la quatrième itération, la valeur de n sera 0 et le compteur sera incrémenté à 4.
  • La condition de la boucle est alors évaluée à false et la boucle se termine.
 
 

6. Ecrivez un programme en C pour inverser les chiffres d'un nombre saisi par l'utilisateur.

Exemple de sortie:

Donner un nombre: 123
321
#include <stdio.h>

int main()
{
	int Nbr,rev=0;   
	printf("Donner un nombre:");
	scanf("%d",&Nbr);

	while(Nbr > 0){
		rev = rev * 10;  
		rev = rev + Nbr%10; 
		Nbr = Nbr/10;
	}
	printf("%d",rev);   

	return 0; 
}

Voici ce que fait le programme ci-dessus:

  • Initialise la variable rev = 0.
  • Dans la boucle while multiplie le nombre inversé 'rev' par 10, ajoutez le reste du nombre original 'Nbr' divisé par 10 à 'rev'.
    • C'est-à-dire, rev = rev + Nbr%10
  • Diviser le nombre original par 10.
    • Dans cette étape, la valeur du nombre original 'Nbr' est mise à jour en la divisant par 10. À chaque itération, le dernier chiffre du nombre original 'Nbr' est supprimé et la boucle se termine lorsque la valeur du nombre original 'Nbr' est égale à 0.

Maintenant, inversons le nombre 123 en utilisant le programme ci-dessus.

Nbr = 123
rev = 0
rev = rev * 10 + Nbr % 10 = 0 * 10 + 123 % 10 = 3
Nbr = Nbr/ 10 = 12
rev = rev * 10 + Nbr % 10 = 3 * 10 + 12 % 10 = 32
Nbr = Nbr/ 10 = 1
rev = rev * 10 + Nbr % 10 = 32 * 10 + 1 % 10 = 321
Nbr = Nbr/10 = 0.

Le résultat sera donc 321.

 
 

7. Écrire un programme C pour afficher les nombres de 0 à 10 et de 10 à 0 en utilisant deux boucles "while".

Exemple de sortie:

Nombres de 0 à 10:
0 1 2 3 4 5 6 7 8 9 10

Nombres de 10 à 0:
10 9 8 7 6 5 4 3 2 1 0
#include <stdio.h>

int main() {
    int i = 0;
    // Première boucle while: Affiche les nombres de 0 à 10
    printf("Nombres de 0 à 10:");
    while (i <= 10) {
        printf("%d ", i);
        i++;
    }

    i = 10;  // Remettre le compteur de la boucle à 10
    // Deuxième boucle while: Affiche les nombres de 10 à 0
    printf("Nombres de 10 à 0:");
    while (i >= 0) {
        printf("%d ", i);
        i--;
    }

    return 0; 
}
 
 

8. Écrivez un programme C qui invite l'utilisateur à saisir une série d'entiers jusqu'à ce que l'utilisateur arrête d'entrer 0 en utilisant une boucle while. Calculez et affichez la somme de tous les entiers positifs entrés.

Exemple de sortie:

Entrez des nombres entiers (entrez 0 pour arrêter):
Entrer un nombre : 6
Entrer un nombre : 2
Entrer un nombre : 1
Entrer un nombre : -6
Entrer un nombre : -7
Entrer un nombre : 0
Entrée d'un nombre : -30
Entrée d'un nombre : 3
Somme de nombres positifs: 12
#include <stdio.h>

 int main() {
    int n; 
    int s = 0;

    printf("Entrez des nombres entiers (entrez 0 pour arrêter):\n");

    while (1) {
        printf("Entrer un nombre:");
        scanf("%d", &n);

        if (n == 0) {
            break;  //Quitter la boucle si l'utilisateur entre 0
        }

        if (n > 0) {
            s += n;  //Ajouter les nombres positifs à la somme
        }
    }

    printf("Somme de nombres positifs: %d", s);

    return 0;
}
 
 

9. Écrivez un programme C qui calcule le produit des nombres de 1 à 5 à l'aide d'une boucle while.

Exemple de sortie:

Nombre actuel: 1, Produit actuel: 1
Nombre actuel: 2, Produit actuel: 2
Nombre actuel: 3, Produit actuel: 6
Nombre actuel: 4, Produit actuel: 24
Nombre actuel: 5, Produit actuel: 120
#include <stdio.h>

int main() {
    int n = 1;
    int p = 1;

    // Démarrer une boucle while pour itérer de 1 à 5
    while (n <= 5) {
        //Mettre à jour le produit en le multipliant par le nbr actuel
        p *= n;
        printf("Nombre actuel: %d, Produit actuel: %d\n", n, p);
        n++;
    }

    return 0;
}
 
 

10. Ecrivez un programme C qui invite l'utilisateur à saisir une série de chiffres jusqu'à ce qu'il saisisse un chiffre dupliqué. Utilisez une boucle while pour vérifier les duplications.

Exemple de sortie:

Entrez des nombres (Entrez un doublon si vous voulez arrêter):
Saisir un nombre: 5
Saisir un nombre: 9
Saisir un nombre: 2
Saisir un nombre: 7
Saisir un nombre: 3
Saisir un nombre: 2
Un doublon a été saisi. Le programme s'arrête.
#include <stdio.h>

int main() {
    int nbr;
    int oldNbr[100];
    int doublon = 0;
    int compteur = 0;

    printf("Entrez des nombres (Entrez un doublon si vous voulez arrêter):");

    while(!doublon){
        printf("Saisir un nombre:");
        scanf("%d", &nbr);

        // Vérifier si le nombre actuel est égal à l'un des nombres précédents
        for(int i = 0; i < compteur; i++){
            if(nbr == oldNbr[i]){
                // Définir le drapeau indiquant qu'un doublon a été trouvé
                doublon = 1;  
                printf("Un doublon a été saisi. Le programme s'arrête.");
                break;  //Sortir de la boucle si un doublon est trouvé
            }
        }
        // Stocker le nombre actuel dans le tableau
        oldNbr[compteur++] = nbr;  
    }

    return 0;
}
 
 

11. Écrivez un programme C qui génère un nombre aléatoire entre 1 et 20 et demande à l'utilisateur de le deviner. Utilisez une boucle while pour donner à l'utilisateur plusieurs chances jusqu'à ce qu'il devine le bon nombre.

Exemple de sortie:

Devinez un nombre entre 1 et 20:
Saisissez votre nombre: 5
Réponse incorrecte. Réessayez!
Saisissez votre nombre: 9
Réponse incorrecte. Réessayez!
Saisissez votre nombre: 2
Réponse incorrecte. Réessayez!
Saisissez votre nombre: 7
Réponse incorrecte. Réessayez!
Saisissez votre nombre: 3
Félicitations! Vous avez deviné le bon nombre en 5 tentatives.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand(time(NULL));
    // Générer un nombre aléatoire entre 1 et 20
    int randNbr = rand() % 20 + 1;  

    int nbr;  //Variable pour stocker la supposition de l'utilisateur
    int tentatives = 0; //Variable pour compter le nombre de tentatives

    printf("Devinez un nombre entre 1 et 20:");

    // Démarrer une boucle while pour donner plusieurs chances à l'utilisateur
    while(1){
        printf("Saisissez votre nombre:");
        scanf("%d", &nbr);

        tentatives++;  //Incrémenter le nombre de tentatives

        // Vérifier si l'hypothèse est correcte
        if (nbr == randNbr) {
            printf("Félicitations! Vous avez deviné le bon nombre en %d tentatives.", tentatives);
            break;  // Sortir de la boucle si l'hypothèse est correcte
        } else {
            printf("Réponse incorrecte. Réessayez!");
        }
    }

    return 0;
}
 
 

12. Ecrivez un programme C qui demande à l'utilisateur de saisir un nom d'utilisateur. Utilisez une boucle while pour continuer à demander un nom d'utilisateur jusqu'à ce qu'un nom valide soit saisi (par ex, au moins 8 caractères).

Exemple de sortie:

Entrez un nom d'utilisateur (au moins 8 caractères): alex00
Erreur: Le nom d'utilisateur doit comporter au moins 8 caractères.

Entrez un nom d'utilisateur (au moins 8 caractères): alex_babtise
Nom d'utilisateur valide.
#include <stdio.h>

int main() {
    char username[20];

    /* Démarrer une boucle while pour continuer à demander 
	le nom d'utilisateur valide */
    while (1) {
        printf("Entrez un nom d'utilisateur (au moins 8 caractères):");
        scanf("%s", username);

        // Vérifier si le nom d'utilisateur a au moins 8 caractères
        if (strlen(username) >= 8) {
            break; //Sortir de la boucle si le nom d'utilisateur est valide
        } else {
            printf("Erreur: Le nom d'utilisateur doit comporter au moins 8 caractères.");
        }
    }

    printf("Nom d'utilisateur valide.");

    return 0;
}
 
 

13. Écrire un programme C qui calcule et affiche la somme des cubes des nombres pairs jusqu'à une limite spécifiée (par exemple, 10) à l'aide d'une boucle while.

Exemple de sortie:

Somme des cubes des nombres pairs jusqu'à 10: 1800
#include <stdio.h>

int main() {
    int max = 10; // Spécifier la limite des nombres pairs
    int n = 2;    // Commencer par le premier nombre pair
    int s = 0;    // Variable pour stocker la somme des cubes

    /* Démarrer une boucle while pour itérer sur les nombres 
    pairs jusqu'à la limite */
    while (n <= max) {
        // Calculer le cube du nombre pair actuel
        int cube = n * n * n;
        
        // Ajouter le cube à la somme
        s += cube;

        // Passer au nombre pair suivant
        n += 2;
    }

    printf("Somme des cubes des nombres pairs jusqu'à %d: %d", max, s);

    return 0;
}
 
 

14. Écrire un programme C qui permet de vérifier si un nombre donné est un palindrome à l'aide d'une boucle while.

Exemple de sortie:

Entrez un nombre: 12345
12345 n'est pas un palindrome.
-------------------------------
Entrez un nombre: 2222
2222 est un palindrome.
#include <stdio.h>

int main() {
    int n, reversedNbr=0, originalNbr;

    printf("Entrez un nombre:");
    scanf("%d", &n);
    originalNbr = n;

    // Démarrer une boucle while pour inverser les chiffres du nombre
    while (n != 0) {
        int r = n % 10;  // Extraire le dernier chiffre
        reversedNbr = reversedNbr * 10 + r; // Créer le nombre inversé
        n /= 10;  // Supprimer le dernier chiffre du nombre original
    }

    // Vérifier si le nombre inversé est égal au nombre original
    if (originalNbr == reversedNbr) {
        printf("%d est un palindrome.", originalNbr);
    } else {
        printf("%d n'est pas un palindrome.", originalNbr);
    }

    return 0;
}
 
 

15. Ecrivez un programme C pour trouver et afficher les 10 premiers nombres de Fibonacci à l'aide d'une boucle while.

Exemple de sortie:

Les 10 premiers nombres de Fibonacci:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
#include <stdio.h>

int main() {
    int n = 10;
    // Initialiser les deux premiers éléments de la série
    int e1 = 0, e2 = 1;  

    printf("Les %d premiers nombres de Fibonacci:", n);

    // Démarrer une boucle while pour générer les nombres de Fibonacci
    while (n > 0) {
        // Afficher le nombre de Fibonacci actuel
        printf("%d, ", e1);  
        // Calculer le prochain nombre de Fibonacci
        int suivant = e1 + e2;  
        // Mettre à jour le premier élément avec la valeur du deuxième élément
        e1 = e2;  
        // Mise à jour du deuxième terme avec le prochain terme calculé
        e2 = suivant;   
        n--;  // Réduire la valeur de n pour la prochaine itération
    }

    return 0;
}
 

Laisser un commentaire

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