Exercices Corrigés En C – Structure conditionnelle

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. Un magasin offre à ses clients 25% de réduction sur les montants d’achat supérieurs à 500 €. Ecrivez un programme en C qui permet d’entrer le prix total hors TVA et de calculer le montant TTC en tenant compte de la remise et du fait que la TVA = 10%.

Exemple de sortie:

Entrer le montant HT: 900
Le montant TTC est: 742.5
#include <stdio.h>

int main()
{
	float HT,TTC;
	
	printf("Entrer le montant HT:");
	scanf("%f", &HT);
	
	TTC = HT + HT * 0.2 ;
	
	if (TTC > 200) {
		TTC = TTC - TTC * 0.15;
		printf("Le montant TTC est: %f", TTC);
	}else{ 
		printf("Le montant TTC est: %f", TTC);
	}

	return 0; 
}
 
 

2. Écrire un programme en C qui demande à l’utilisateur deux nombres n1 et n2 et lui indique ensuite si le produit de ces deux nombres est positif ou négatif. On prévoit dans le programme le cas où le produit peut être nul.

Exemple de sortie:

Entrer le 1er nombre:  -1.5
Entrer le 2éme nombre:  3
Le produit est négatif
-----------------------------
Entrer le 1er nombre:   1
Entrer le 2éme nombre:  3
Le produit est positif
-----------------------------
Entrer le 1er nombre:   0
Entrer le 2éme nombre:  3
Le produit est nul
#include <stdio.h>

int main()
{
	float n1,n2;
	
	printf("Entrer le 1er nombre:"); 
	scanf("%f", &n1);
	printf("Entrer le 2éme nombre:"); 
	scanf("%f", &n2);
	
	if(n1 == 0 || n2 == 0)
		printf("Le produit est nul");
		
	if (n1*n2 < 0)
		printf("Le produit est négatif");
		
	if (n1*n2 > 0)  
		printf("Le produit est positif");

	return 0; 
}
 
 

3. Écrire un programme en C qui permette d’ajouter un commentaire sur le score saisi au clavier (si le score est supérieur à 10 alors il affiche « GOOD! » sinon « NOT GOOD! » (NB: le score est compris entre 0 et 20!).

Exemple de sortie:

Entrer le score: 15.5
GOOD!
------------------
Entrer le score: 5
NOT GOOD!
------------------
Entrer le score: -5
Score invalide!
#include <stdio.h>

int main()
{
	float score;
	printf("Entrer le score:"); 
	scanf("%f",&score);

	if (score < 0  || score > 20)
		printf("Score invalide!");
	if (score >= 0 && score < 10)
		printf("NOT GOOD!");
	if (score >= 10 && score <= 20)
		printf("GOOD!");

	return 0; 
}
 
 

4. Le service de photocopie de votre université facture 0,50 € pour les 10 premières photocopies, 0,45 € pour les 20 suivantes et 0,30 € au-delà de 30 photocopies. Ecrivez un programme en C qui demande à l'utilisateur le nombre de photocopies réalisées et affiche la facture correspondante.

Exemple de sortie:

Entrez le nombre de papies: 25
Le prix total est: 11.25 €
#include <stdio.h>

int main()
{
	int N;	
	float prix;
	
	printf("Entrer le nombre de papies:");
	scanf("%d", &N);
	
	if(N <= 20) 
		prix = N * 0.50;
		
	if(N > 10 && N <= 30) 
		prix = N * 0.45;
		
	if(N > 30) 
		prix = N * 0.30;
   
	printf("Le prix total est: %.2f €", prix);

	return 0; 
}
 
 

5. Écrire un programme en C permettant d'afficher si un nombre saisi est pair ou impair.

Exemple de sortie:

Entrer un nombre: 8 
Nombre pair
#include <stdio.h>

int main() 
{
	int nbr;
	
	printf("Entrer un nombre:");
	scanf("%d",&nbr);
	
	if (nbr % 2 == 0) 
		printf("Nombre pair");
	else
		printf("Nombre impair");

	return 0; 
}

Si un nombre est divisible par 2 sans reste, il est pair. Vous pouvez calculer le reste à l'aide de l'opérateur modulo "%", comme ceci nbr % 2 == 0. Si un nombre divisé par 2 laisse un reste de 1, le nombre est impair. Vous pouvez le vérifier en utilisant nbr % 2 == 1.

 
 

6. Écrire un programme en C permettant d'afficher le plus grand des 3 nombres saisis au clavier.

Exemple de sortie:

Entrer 1er nombre : 2
Entrer 2éme nombre: 9
Entrer 3éme nombre: 7
Le nombre le plus grand est: 9
#include <stdio.h>

int main() 
{
	int n1,n2,n3,max;
	
	printf("Entrer 1er nombre:"); 
	scanf("%d",&n1);
	printf("Entrer 2éme nombre:"); 
	scanf("%d",&n2);
	printf("Entrer 3éme nombre:"); 
	scanf("%d",&n3);

	max = n1; 
	if (n2 >= max) 
		max = n2;
	if (n3 >= max) 
		max = n3;
  
	printf("Le nombre le plus grand est: %d",max);

	return 0; 
}
 
 

7. Écrire un programme en C qui calcule la valeur absolue d'un nombre saisi par l'utilisateur.

Exemple de sortie:

Entrer un nombre: -5
La valeur absolue de -5 est 5
#include <stdio.h>

int main() 
{
	int n;
	
	printf("Entrer un nombre :");
	scanf("%d",&n);
	
	if(n >= 0)
		printf("La valeur absolue de %d est %d",n,n);
	else 
		printf("La valeur absolue de %d est %d",n,-n);
		
	return 0; 
}
 
 

8. Écrire un programme en C pour afficher les mois en lettres en fonction du nombre saisi par l'utilisateur.

Exemple de sortie:

Entrer le numéro du mois: 1
Janvier

Entrer le numéro du mois: 3
Mars

Entrer le numéro du mois: 12
Décembre
#include <stdio.h>

int main()
{
	int M;
	
	printf("Entrer le numéro du mois:");
	scanf("%d", &M);
	
	switch (M) {
	case 1:
	  printf("Janvier"); break;
	case 2:
	  printf("Février"); break;
	case 3:
	  printf("Mars"); break;
	case 4:
	  printf("Avril"); break;
	case 5:
	  printf("Mai"); break;
	case 6:
	  printf("Juin"); break;
	case 7:
	  printf("Juille"); break;
	case 8:
	  printf("Aout"); break;
	case 9:
	  printf("Septembre"); break;
	case 10:
	  printf("Octobre"); break;
	case 11:
	  printf("Novembre"); break;
	case 12:
	  printf("Décembre"); break;
	default:
	  printf("Aucun mois ne correspondant!");
	  break;   
	}  

	return 0; 
}

L'instruction switch est une instruction de contrôle de flux dans laquelle nous pouvons définir une variable changeante et exécuter ensuite un code différent en fonction de la valeur de la variable changeante. C'est une alternative à If-Else.

 
 

9. Écrire un programme en C qui permute et affiche les valeurs des trois nombres (N1, N2 et N3) saisis par l'utilisateur, en ordre croissant c'est-à-dire (N1 < N2 < N3).

Exemple de sortie:

Entrer le nombre N1 : 10
Entrer le nombre N2 : 1
Entrer le nombre N3 : 5
------permutation------
N1 = 1
N2 = 5
N3 = 10
#include <stdio.h>

int main()
{
	int N1,N2,N3,tmp;
	
	printf("Entrer le nombre N1:"); scanf("%d",&N1);
	printf("Entrer le nombre N2:"); scanf("%d",&N2);
	printf("Entrer le nombre N3:"); scanf("%d",&N3);

	if(N1>N2) { tmp = N1; N1 = N2; N2 = tmp; }
	if(N1>N3) { tmp = N1; N1 = N3; N3 = tmp; } 
	if(N2>N3) { tmp = N2; N2 = N3; N3 = tmp; }

	printf("N1 = %d\n", N1);
	printf("N2 = %d\n", N2);
	printf("N3 = %d", N3);

	return 0; 
}
 
 

10. Écrire une fonction qui affiche si le nombre passé en paramètre est pair ou impair.

Exemple de sortie:

3 est impair.
2 est pair.
#include <stdio.h>
 
void paireOuImpaire(int N) 
{ 
    // Trouver le reste
    int reste = N % 2; 
  
    if (reste == 0){ 
        printf("Paire"); 
    } else{ 
        printf("Impaire"); 
    } 
} 

int main() 
{ 
    // Appel à la fonction
    paireOuImpaire(N); 
  
    return 0; 
}
 
 

11. Écrire une fonction qui permet de calculer la valeur absolue d’un nombre donné (en utilisant l'opérateur ternaire ?: ).
#include <stdio.h>
 
int nbrAbsolue(int n)
{
    return n < 0 ? -n : n;
}

int main() 
{ 
    // Appel à la fonction
    int n = nbrAbsolue(-5);     // n = 5
  
    return 0; 
}
 
 

12. Ecrivez un programme C pour vérifier si deux ou plusieurs nombres entiers non négatifs ont le même chiffre à droite.

Exemple de sortie:

checkList(11,21,41) -> TRUE
checkList(11,25,41) -> TRUE
checkList(13,21,46) -> FALSE
#include <stdio.h>

//Déclarez la fonction "checkList" avec trois paramètres
int checkList(int n1, int n2, int n3); 

int main(void)
{
    printf("%d", checkList(11,21,41));   // TRUE
    printf("%d", checkList(11,25,41));   // TRUE
    printf("%d", checkList(13,21,46));   // FALSE
}

// Définition de la fonction "checkList"
int checkList(int n1, int n2, int n3)
{
    /* Vérifier si le dernier chiffre de 'n1' est égal au dernier 
       chiffre de 'n2' ou de 'n3' ou si le dernier chiffre de 'n2' est
       égal au dernier chiffre de 'n3'. */
    if (n1 % 10 == n2 % 10 || n1 % 10 == n3 % 10 || n2 % 10 == n3 % 10) {
        //Si l'une de ces conditions est vraie, la valeur 1 est renvoyée
        return 1;
    } else {
        //Si aucune des conditions n'est vraie, la valeur 0 est renvoyée
        return 0; 
    }
}
 
 

13. Ecrivez un programme C pour vérifier s'il est possible d'additionner deux entiers pour obtenir le troisième entier à partir de trois entiers donnés.

Exemple de sortie:

checkSum(1,2,3) -> TRUE
checkSum(5,5,10) -> TRUE
checkSum(2,2,1) -> FALSE
#include <stdio.h>

//Déclarez la fonction "checkSum" avec trois paramètres
int checkSum(int n1, int n2, int n3); 

int main(void)
{
    printf("%d", checkSum(1,2,3));   // TRUE
    printf("%d", checkSum(5,5,10));  // TRUE
    printf("%d", checkSum(2,2,1));   // FALSE
}

// Définition de la fonction "checkSum"
int checkSum(int n1, int n2, int n3)
{
    /* Vérifier si deux nombres parmi 'n1', 'n2' et 'n3' 
       s'additionnent pour former le troisième nombre. */
    if (n1 == n2 + n3 || n2 == n1 + n3 || n3 == n1 + n2) {
        return 1; // Si la condition est vraie, retournez 1
    } else {
        return 0; // Si la condition est fausse, retournez 0
    }
}
 
 

14. Écrire un programme C qui vérifie si un nombre non négatif donné est un multiple de 3 ou de 7, mais pas les deux.

Exemple de sortie:

checkNbr(3) -> TRUE
checkNbr(7) -> TRUE
checkNbr(21) -> FALSE
#include <stdio.h>

//Déclarez la fonction "checkNbr" avec un paramètre
int checkNbr(int n); 

int main(void)
{
    printf("%d", checkNbr(3));   // TRUE
    printf("%d", checkNbr(7));   // TRUE
    printf("%d", checkNbr(21));  // FALSE
}

// Définition de la fonction "checkNbr"
int checkNbr(int n)
{
    /* Vérifier si "n" est divisible par 3 XOR divisible par 7
    XOR (^) retourne vrai si l'une des conditions est remplie, 
    mais pas les deux. */
    if (n % 3 == 0 ^ n % 7 == 0) {
        return 1; // Si la condition XOR est vraie, retourner 1 (vrai)
    } else {
        return 0; // Si la condition XOR est fausse, retourner 0 (faux)
    }
}
 
 

15. Écrivez un programme C qui accepte deux entiers et vérifie si l'un d'eux est 6 ou si leur somme ou différence est 6. Si l'une de ces conditions est remplie, le programme renvoie true. Dans le cas contraire, il renvoie false.

Exemple de sortie:

checkNbr(6,1) -> TRUE
checkNbr(3,3) -> TRUE
checkNbr(3,2) -> FALSE
#include <stdio.h>

//Déclarez la fonction "checkNbr" avec deux paramètre
int checkNbr(int n1, int n2); 

int main(void)
{
    printf("%d", checkNbr(6,1));  // TRUE
    printf("%d", checkNbr(3,3));  // TRUE
    printf("%d", checkNbr(3,2));  // FALSE
}

// Définition de la fonction "checkNbr"
int checkNbr(int n1, int n2)
{
    /* Vérifiez si "n1" est égal à 6, si "n2" est égal à 6, 
        si la somme de "n1" et "n2" est égale à 6 ou
        si la différence absolue entre "n1" et "n2" est égale à 6 */
    if (n1 == 6 || n2 == 6 || n1 + n2 == 6 || abs(n1 - n2) == 6) {
        //Si l'une des conditions est remplie, retourner 1 (true)
        return 1; 
    } else {
        //Si aucune des conditions n'est remplie, renvoyer 0 (false)
        return 0; 
    }
}
 
 

16. Ecrivez un programme C qui accepte deux entiers et vérifie s'ils sont égaux ou non.

Exemple de sortie:

Entrez deux nombres N1 et N2: 20 20
N1 et N2 sont égaux.
----------------------------------
Entrez deux nombres N1 et N2: 8 6
N1 et N2 ne sont pas égaux.
#include <stdio.h>

void main()
{
    int N1, N2;

    printf("Entrez deux nombres N1 et N2:");
    scanf("%d %d", &N, &N2);
	
    if (N == N2)
        printf("N1 et N2 sont égaux.");
    else
        printf("N1 et N2 ne sont pas égaux.");
}
 
 

17. Écrire un programme C pour vérifier si un nombre donné est positif ou négatif.

Exemple de sortie:

Entrez un nombre: 3
3 est un nombre positif
------------------------
Entrez un nombre: -3
-3 est un nombre négatif
#include <stdio.h>

void main()
{
    int n;

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

    if (n >= 0)
        printf("%d est un nombre positif", n); 
    else
        printf("%d est un nombre négatif", n);
}
 
 

18. Ecrivez un programme C pour déterminer si une année donnée est bissextile ou non.

Les années bissextiles sont des années où un jour supplémentaire est ajouté à la fin du mois le plus court(Février).

Exemple de sortie:

Entrez une année: 2024
2024 est une année bissextile.
#include <stdio.h>

void main()
{
    int an;

    printf("Entrez une année:");
    scanf("%d", &an);

    if ((an % 400) == 0)
        printf("%d est une année bissextile.", an);
    else if ((an % 100) == 0)
        printf("%d n'est pas une année bissextile.", an);
    else if ((an % 4) == 0)
        printf("%d est une année bissextile.", an);
    else
        printf("%d n'est pas une année bissextile.", an);
}
 
 

19. Écrire un programme C pour lire l'âge d'un candidat et déterminer s'il a le droit de voter.

Exemple de sortie:

Entrez votre age: 21
Bienvenue. Vous êtes éligible pour voter.

Entrez votre age: 17
Désolé, vous n'avez pas le droit de voter.
#include <stdio.h>

void main()
{
  int age;

  printf("Entrez votre age:");
  scanf("%d",&age);

  if (age < 18)
    printf("Désolé, vous n'avez pas le droit de voter.");
  else
    printf("Bienvenue. Vous êtes éligible pour voter.");
}
 
 

20. Écrire un programme C pour lire la température et afficher un message approprié en fonction de l'état de température ci-dessous:
  • T < 0: Temps glacial
  • T 0-10: Temps très froid
  • T 10-20: Temps froid
  • T 20-30: Températures normales
  • T 30-40: Temps Chaud
  • T >=40: Temps très chaud

Exemple de sortie:

Entrez la températures: 21
Températures normales
#include <stdio.h>

void main()
{
    int T;

    printf("Entrez la températures:");
    scanf("%d", &T);

    if (T < 0)
        printf("Temps glacial");
    else if (T < 10)
        printf("Temps très froid");
    else if (T < 20)
        printf("Temps froid");
    else if (T < 30)
        printf("Températures normales");
    else if (T < 40)
        printf("Temps Chaud");
    else
        printf("Temps très chaud");
}
 
 

21. Écrire un programme C pour vérifier si un triangle est équilatéral, isocèle ou scalène.

Exemple de sortie:

Entrer les trois côtés du triangle: 40 40 50
Il s'agit d'un triangle isocèle.
#include <stdio.h>

int main()  
{  
    // Déclarer les variables correspondant aux côtés du triangle
    int a, b, c;

    //Lit tous les côtés du triangle  
    printf("Entrer les trois côtés du triangle:");
    scanf("%d %d %d", &a, &b, &c);
	
    // Vérifier si tous les côtés sont égaux
    if(a==b || a==c || b==c)
    {  
        printf("Il s'agit d'un triangle équilatéral.");
    }  
    // Vérifier si deux côtés sont égaux 
    else if(a==b && b==c)  
    {  
        printf("Il s'agit d'un triangle isocèle.");
    }  
    // Si aucun côté n'est égal à un autre
    else 
    {  
        printf("Il s'agit d'un triangle scalène.");
    }  

    return 0;  
} 
 
 

22. Ecrivez un programme C pour vérifier si un triangle peut être formé avec les valeurs données pour les angles.

Exemple de sortie:

Entrer les trois angles du triangle: 70 75 60
Le triangle n'est pas valide.
#include <stdio.h>

void main()  
{  
    int a, b, c, s;

    printf("Entrer les trois angles du triangle:");   
    scanf("%d %d %d", &a, &b, &c);

    // Calculer la somme de tous les angles du triangle 
    s = a + b + c;   

    /* Vérifier si la somme = 180 alors c'est un 
       triangle valide sinon non. */  
    if(s == 180)   
    {  
        printf("Le triangle est valide.");
    }  
    else  
    {  
        printf("Le triangle n'est pas valide."); 
    }  
}
 
 

23. Écrire un programme C pour vérifier si un caractère est un alphabet, un chiffre ou un caractère spécial.

Exemple de sortie:

Saisir un caractère: #
Il s'agit d'un caractère spécial.
#include <stdio.h>

int main()  
{  
    char c;

    printf("Saisir un caractère:");
    scanf("%c", &c);

    if((c>='a' && c<='z') || (c>='A' && c<='Z'))  
    {  
        printf("Il s'agit d'un alphabet.");
    } 	
    else if(c>='0' && c<='9')
    {  
        printf("Il s'agit d'un chiffre.");
    } 
    else 
    {  
        printf("Il s'agit d'un caractère spécial.");
    }  
}
 
 

24. Écrire un programme C pour vérifier si un alphabet est une voyelle ou une consonne.

Exemple de sortie:

Entrez une lettre quelconque de l'alphabet: a
La lettre est une voyelle.
#include <stdio.h>

void main()  
{  
    char c;

    printf("Entrez une lettre quelconque de l'alphabet:");
    scanf("%c", &c);

    if(c=='a' || c=='e' || c=='i' || c=='o' || c=='u' || c=='A' || c=='E' || c=='I' || c=='O' || c=='U')  
    {  
        printf("La lettre est une voyelle.");
    }  
    else if((c>='a' && c<='z') || (c>='A' && c<='Z'))  
    {  
        printf("La lettre est une consonne.");
    }  
    else  
    {  
        printf("Le caractère n'est pas un alphabet.");
    }   
}
 
 

25. Écrire un programme C pour calculer les pertes et profits sur une transaction.

Exemple de sortie:

Prix de vente: 500
Prix du coût en entrée: 300 
Vous pouvez provisionner le montant de votre bénéfice: 200
#include <stdio.h>

void main()  
{  
    int cprix, vprix, profit;

    printf("Prix de vente:");
    scanf("%d", &vprix);
    printf("Prix du coût en entrée:");
    scanf("%d", &cprix);

    // Vérifier si le prix de vente est supérieur au prix de coût.
    if(vprix > cprix)  
    {  
        // Calculer le montant du profit.
        profit = vprix - cprix;  
        printf("Vous pouvez provisionner le montant de votre bénéfice: %d\n", profit);
    }  
    // Vérifier si le prix de coût est supérieur au prix de vente.
    else if(cprix > vprix)  
    {  
        // Calculer le montant de la perte.
        profit = cprix - vprix;  
        printf("Vous avez subi une perte de somme: %d\n", profit);
    }  
    // S'il n'y a ni bénéfice ni perte.
    else  
    {  
        printf("Vous êtes dans une situation où il n'y a ni profit ni perte.");
    }  
}
 

Laisser un commentaire

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