Enoncé exercice 1

Ecrire un programme C qui permet de dire si un entier est pair ou impair.

Correction exercice 1

Comme on en est l’habitude jusqu’à l’instant, on commence par la lecture de l’entier sur lequel on va effectuer le test. Ceci va être fait vers la variable entière a (ligne 7).

On rappelle maintenant qu’un entier sera pair s’il admet 2 comme diviseur, dans l’autre cas il sera dit impair. En d’autres termes, a sera impair si le reste de sa division sur 2 est égal à 1, et dans l’autre cas il sera pair.

L’opérateur qui donne le reste de la division en langage C, est appelé modulo. Il est noté %. Tout ce qu’il faut donc faire, est un simple test sur la valeur de a%2. Si elle est égale à 1 il s’agira d’un nombre impair, sinon d’un nombre pair. Donc la condition pour que a soit impair est : a%2==1 (il faut faire la différence entre == qui veut dire égalité et = l’opérateur d’affectation). Si cette dernière condition est vérifiée, le programme va exécuter le bloc d’instructions de if (entre les deux accolades des lignes 9 et 11) qui comporte une fonction printf qui va informer l’utilisateur que le nombre saisi est impair. En même temps le bloc de else sera ignoré.

Dans l’autre cas, c’est-à-dire lorsque a%2 est égal à 0, c’est le bloc de esle qui sera exécuté, et un message indiquant que le nombre est pair sera affiché par la fonction printf (ligne 14).

Solution exercice 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a;
    printf("Donnez un entier:\n");
    scanf("%d",&a);
    if(a%2==1)
    {
       printf("%d est impair\n",a);
    }
    else
    {
       printf("%d est pair\n",a);
    }
    system("pause");
    return 0;
}
Enoncé exercice 2

Ecrire un programme C qui permet de comparer deux entiers a et b, et d’afficher selon le cas l’un des messages suivants: a=b, a>b ou a<b.

Correction exercice 2

On commence comme toujours par la lecture des deux entiers à comparer, et ceci à l’aide de la fonction scanf et vers les variables entières a et b (ligne 7).

La première condition à être vérifiée est l’égalité entre a et b (a==b). Si celle-ci est vraie, le bloc du premier if sera exécuté et le message a=b sera affiché (ligne 10).

Dans le cas où cette dernière condition n’est pas vraie, c’est le bloc else du premier if qui sera alors exécuté. à l’intérieur de celui-ci, on trouve un deuxième test effectué sur la condition a<b. Si cette condition est vraie, le message correspondant sera affiché, et dans l’autre cas c’est l’autre bloc else qui sera exécuté et le message a>b sera affiché.

Ainsi tous les trois cas sont traités et aucun test redondant n’est rencontré.

Solution exercice 2
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a,b;
    printf("Donnez les deux entiers a comparer:\n");
    scanf("%d%d",&a,&b);
    if(a==b)
    {
       printf("%d=%d\n",a,b);
    }
    else
    {
       if(a<b)
       {
          printf("%d<%d\n",a,b);
       } 
       else
       {
          printf("%d>%d\n",a,b);
       }
    }
    system("pause");
    return 0;
}
Enoncé exercice 3

Ecrire un programme C qui lit trois entiers pour les afficher ensuite dans un ordre croissant.

Correction exercice 3

Dans cet exercice il est demandé de trier trois entiers a, b et c dans un ordre croissant. C’est-à-dire de les afficher du plus petit au plus grand. On va traiter cet exercice d’une manière très simple, en suivant la logique suivante: si a est le plus grand, on compare alors b et c pour trouver le nombre le plus petit et du coup celui du milieu.

De cette façon on est devant trois cas possibles, au sein de chacun d’eux une bifurcation en deux sous cas :

  • Si a est le plus grand : b>=c ou c>=b;
  • Si b est le plus grand : c>=a ou a>=c;
  • Si c est le plus grand : b>=a ou a>=b.

Ces trois cas seront traités séparément, et d’une manière similaire. En conséquence seul le premier cas sera détaillé ici (lignes 8-12).

Le nombre a est le plus grand peut être décomposé en a>=b et a>=c. Le symbole du et en langage C est &&. Donc (si a est le plus grand) correspond à : if(a>=b && a>=c).

A l’intérieur du bloc de ce dernier if on doit faire la comparaison entre b et c. Si b est plus grand que c on doit afficher alors les trois nombre dans cet ordre : c b a (ligne 10). Et dans l’autre cas on les affiche dans l’ordre b c puis a (ligne 11).

On rappelle que dans le cas où on n’a qu’une seule instruction dans un bloc de if ou de else on peut enlever ces accolades.

Solution exercice 3
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a,b,c;
    printf("Donnez 3 entiers:\n");
    scanf("%d%d%d",&a,&b,&c);
    if(a>=b && a>=c)
    {
       if(b>=c) printf("%d %d %d\n",c,b,a);
       else printf("%d %d %d\n",b,c,a);
    }
 
    if(b>=a && b>=c)
    {
       if(a>=c) printf("%d %d %d\n",c,a,b);
       else  printf("%d %d %d\n",a,c,b);
    }
 
    if(c>=a && c>=b)
    {
       if(a>=b) printf("%d %d %d\n",b,a,c);
       else printf("%d %d %d\n",a,b,c);
    }  
    system("pause");
    return 0;
}