400 Exercices Corrigés En C – Partie 2

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.

 
 

Veuillez voir les exercices de 1 à 30 sur ce lien.

 

31. 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.

 
 

32. Écrire un programme en C permettant d’entrer un nombre et d’afficher le triangle d’étoiles.

Exemple de sortie:

Entrez un nombre: 5
    *
   ***
  *****
 *******
*********
#include <stdio.h>

int main()
{
	int Nbr,i,j;   
	printf("Entrez un nombre:");
	scanf("%d",&Nbr);

	for(i=0; i < Nbr; i++){
		for(j=1; j <= (Nbr*2)-1; j++){
			if (j >= Nbr-i && j <= Nbr+i)                    
				printf("*");
			else   
				printf(" ");   
		}
		printf("\n");      
	}  
	return 0; 
}
 
 

33. Écrire un programme en C qui permet de savoir si le nombre saisi est Premier ou non. (Un nombre premier est un nombre uniquement divisible par 1 ou par lui-même).

Exemple de sortie:

Entrer un nombre : 29
29 est un nombre premier

Entrer un nombre : 21
21 n'est pas un nombre premier

21 a quatre diviseurs (1, 3, 7 et 21) donc ce n'est pas un nombre premier.

#include <stdio.h>

int main()
{
	int i=2,Nbr;
	
	printf("Entrer un nombre :"); 
	scanf("%d",&Nbr);
	
	while(Nbr%i != 0 && i < Nbr){
		i++;
	}
	
	if (i == Nbr) 
		printf("%d est un nombre premier",Nbr);
	else  
		printf("%d n'est pas un nombre premier",Nbr);
		
	return 0; 
}

Une façon simple de déterminer si un nombre est premier est de faire une boucle allant de 2 à n-1 et de vérifier si le nombre est divisible par n'importe quel nombre de cette plage. Si c'est le cas, il ne s'agit pas d'un nombre premier ; sinon, c'est le cas.

 
 

34. Ecrivez un programme en C qui permet de saisir 5 nombres dans un tableau. Comptez ensuite le nombre d'éléments pairs et impairs.

Exemple de sortie:

Entrer un nombre: 1
Entrer un nombre: 3
Entrer un nombre: 2
Entrer un nombre: 6
Entrer un nombre: 9

Total des éléments pairs: 2 
Total des éléments impaires: 3
#include <stdio.h>

int main()
{
	int i,pair=0,impair=0,tab[5]; 

	for(i=0; i<5; i++){
		printf("Entrer un nombre:");
		scanf("%d",&tab[i]);     
	}   

	for(i=0; i<5; i++){
		if(tab[i]%2==0) pair++;
		else impair++;       
	}
  
	printf("Total des éléments pairs: %d\n",pair);
	printf("Total des éléments impaires: %d",impair);
		
	return 0; 
}

Le programme ci-dessus invite l'utilisateur à saisir 5 nombres dans un tableau nommé tab, puis affiche le total des éléments pairs et impaires.

Déclarez et initialisez deux variables avec zéro pour stocker les nombres pairs et impairs.
pair=0 et impair=0.

La première boucle POUR demande à l'utilisateur de saisir 5 éléments dans le tableau, et la boucle for s'exécute de 1 jusqu'à 5, invitant l'utilisateur à saisir chaque élément à l'aide de scanf(), et stockant chaque entrée dans l'index correspondant du tableau tab[i].

La deuxième boucle for parcourt le tableau tab de 0 à 5. A l'intérieur de la boucle, incrémenter le nombre pair de 1 si l'élément courant du tableau est pair. Sinon, on incrémente le nombre impair.

Enfin, nous affichons le résultat à l'aide de printf().

 
 

35. Ecrivez un programme en C qui demande d'entrer un tableau Tab de 10 nombres, et de placer les éléments pairs dans un tableau Tab1 et les éléments impairs dans un tableau Tab2. Affichez ensuite Tab1 et Tab2.

Exemple de sortie:

Tab : 1 5 2 4 9 3 3 6 8 7   
Tab1: 2 4 6 8     
Tab2: 1 5 9 3 3 7
#include <stdio.h>

int main()
{
	int tab[10],tab1[10],tab2[10],i,j=0,k=0;
	
	//Stocker les éléments dans le tableau original
	for(i=0; i < 10; i++) {  
		printf("Entrer un nombre:");
		scanf("%d",&tab[i]);
	}  

	for(i=0; i < 10; i++) {  
		if(tab[i]%2 == 0){
			//Stocker les éléments paires
			tab1[j] = tab[i];  
			j++;
		}
		else{
			//Stocker les éléments impaires
			tab2[k] = tab[i]; 
			k++; 
		}
	}
	//Afficher le tableau 1
	for(i=0; i < j ; i++){
		printf("%d ",tab1[i]);
	}  
		
	printf("\t");
	
	//Afficher le tableau 2
	for(i=0; i < k; i++){
		printf("%d ",tab2[i]); 
	}  

	return 0; 
}

La première instruction printf demande à l'utilisateur d'entrer N nombre d'éléments dans le tableau tab à l'aide d'une boucle for, et stocke chaque entrée dans l'index correspondant du tableau tab[i].

La boucle for suivante itère ensuite sur chaque élément de tab et sépare les éléments pairs et impairs dans deux tableaux différents tab1 et tab2, respectivement, à l'aide d'instructions If-Else. Les variables j et k sont utilisées pour suivre les indices des éléments pairs et impairs dans les deux tableaux.

Enfin, les deux dernières instructions printf(Ligne 27 et 34) affichent les éléments pairs et impairs trouvés, respectivement, en utilisant une boucle for pour itérer sur chaque élément des deux tableaux.

 
 

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.
 
 

37. Écrire un programme en C qui compte le nombre d'éléments dupliqués dans un tableau de nombres entiers saisi par l'utilisateur.

Exemple de sortie:

Entrer un nombre: 5   
Entrer un nombre: 1  
Entrer un nombre: 5  
Entrer un nombre: 6   
Entrer un nombre: 3  
Entrer un nombre: 5   
Entrer un nombre: 4   
Entrer un nombre: 7   
Entrer un nombre: 9   
Entrer un nombre: 5
Nombre total d'éléments dupliqués est: 4
#include <stdio.h>

int main()
{
	int tab[10],i,j,compteur=0; 
	
	for(i=0; i<10; i++){
		printf("Enter un nombre:");
		scanf("%d",&tab[i]);                
	}

	for(i=0; i<10; i++){
		for(j=i+1; j<10; j++){
			if (tab[i] == tab[j]){
				compteur++;
			}
		} 
	}	
	printf("Nombre total d'éléments dupliqués est: %d",compteur) ;

	return 0; 
}

Le programme ci-dessus invite l'utilisateur à saisir 10 nombres dans un tableau nommé tab.

La première boucle for demande à l'utilisateur de saisir 10 éléments dans le tableau, et la boucle for s'exécute de 1 jusqu'à 10, invitant l'utilisateur à saisir chaque élément à l'aide de scanf(), et stockant chaque entrée dans l'index correspondant du tableau tab[i].

Initialiser la variable "compteur" avec 0 pour stocker le nombre de doublons.

Pour compter le nombre total d'éléments dupliqués dans un tableau donné, nous avons besoin de deux boucles. Exécutez une boucle extérieure de 0 à la taille(10). La structure de la boucle doit ressembler à for(i=0; i<10; i++). Cette boucle est utilisée pour sélectionner chaque élément du tableau et vérifier les éléments suivants pour les éléments en double en utilisant une autre boucle imbriquée.

Exécutez une autre boucle interne pour trouver le premier doublon de l'élément actuel du tableau. Exécutez une boucle interne de i + 1 à la taille(10), la structure de la boucle devrait ressembler à for(j=i+1; j<10; j++). Pourquoi exécuter la boucle à partir de i + 1 ? Parce que nous devons rechercher les éléments en double dans les éléments suivants, à partir de l'élément actuel.

La boucle interne vérifie la présence d'un élément en double. Si c'est le cas, le compteur est incrémenté. C'est-à-dire if (tab[i] == tab[j]) compteur++;.

 
 

38. Écrire un programme en C qui prend deux entiers de l'utilisateur (un nombre de base et un exposant) et calcule la puissance.

Exemple: Dans le cas de 23

  • 2 est le nombre de base
  • 3 est l'exposant
  • Et la puissance est égale à 2*2*2

Exemple de sortie:

Entrer la base: 2
Entrer l'exposant: 3
2 ^ 3 = 8
#include <stdio.h>

int main()
{
	int e, i;
	float puissance,b;
	puissance = 1;
	
	printf("Entrer la base:"); 
	scanf("%f",&b);
	printf("Entrer l'exposant:"); 
	scanf("%d",&e);
     
	for(i=1; i<=e; i++){
		puissance = puissance * b;
	}
 
	printf("%.1f ^ %d = %.1f",b,e,puissance);

	return 0; 
}

Voici la logique descriptive étape par étape:

  • L'utilisateur entre la base et les exposants. Les stocker dans deux variables, b et e.
  • Déclarer et initialiser une autre variable pour stocker la puissance, puissance = 1.
  • Exécutez une boucle de 1 à exposant, en incrémentant le compteur de la boucle de 1 à chaque itération. La structure de la boucle doit ressembler à for(i=1; i<=e; i++).
  • Pour chaque itération à l'intérieur de la boucle, multipliez la puissance par la base, c'est-à-dire puissance = puissance * b.
  • Enfin, à la fin de la boucle, il ne reste plus que la puissance dans la variable puissance.
 
 

39. Écrire un programme en C qui permet d'entrer 10 nombres entiers et de savoir si ces nombres entiers sont successifs ou non.

Exemple de sortie:

0 1 3 4 5 6 7 8 9 
Les nombres ne sont pas successives

11 12 13
Les nombres sont successives
#include <stdio.h>

int main()
{
	int check=0,i,tab[10];
	
	printf("Entrer un nombre:"); 
	scanf("%d",&tab[0]);

	for(i=1; i<=9; i++){
		printf("Entrer un nombre:"); 
		scanf("%d",&tab[i]);
		
		if (tab[i] < tab[i-1]){
			check=1;
		}
	}
	
	if (check==0)
		printf("Les nombres sont successives");
	else
		printf("Les nombres ne sont pas successives");

	return 0; 
}
 
 

40. Ecrivez un programme en C qui demande l'âge et permet de renseigner sa catégorie sachant que les catégories sont les suivantes:
  • Gamin de 6 à 7 ans
  • Pupille de 8 à 9 ans
  • Jeune de 10 à 11 ans
  • Cadet après 12 ans

Exemple de sortie:

Entrer votre age : 6
Vous êtes Gamin
#include <stdio.h>

int main()
{
	int age;
	
	printf("Entrer votre age :"); 
	scanf("%d",&age);

	if(age >= 6 && age <= 7) 
		printf("Vous êtes Gamin");
		
	if(age >= 8 && age <= 9) 
		printf("Vous êtes Pupille");

	if(age >= 10 && age <= 11)
		printf("Vous êtes Jeune");

	if(age >= 12) 
		printf("Vous êtes Cadet"); 

	return 0; 
}
 

Laisser un commentaire

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