Exercice langage C: les valeurs des variables après exécution d'un programme

(*3) Soit le code suivant :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int i;

printf("i? ");

scanf("%d", &i);

switch (i) {

case 0 : printf(" NUL"); break;

case 1 : case 3 : case 5 : case 7 : case 9 :

printf(" IMPAIR"); break;

case 2 : case 4 : case 6 : case 8 :

printf(" PAIR"); break;

default : printf("NEGATIF OU PAS UN CHIFFRE"); break;
}
Réécrivez l’instructionswitch en n’utilisant que des instructionsif.


(*2) Soit le code suivant :



int i = 0, j = 5, somme = 20 ;

if (j && (i = somme / j) ) somme = 10 ;

else somme = 30 ;

Donnez les valeurs des variables après l’exécution de ce programme.

Réponse : i vaut 4, j vaut 0 et somme vaut 10.

Le test dans l’instruction if peut s’écrire ainsi :

j != 0 && (i = somme / j) != 0

Comme j est différent de zéro (il vaut 5), le premier terme est vrai. Le résultat de l’expression somme/j est d’abord calculé, donc la valeur 4 est stockée dans i, qui différente de 0, entraîne que le second terme est vrai également.

En conséquence, i vaut 4, j vaut 0 et somme vaut 10.