QCM en programmation C – Opérateurs arithmétiques – Partie 1

QCM sur C avec des réponses pour la préparation des entretiens, des tests en ligne, des examens etc.

 
 

1. Quelle est la sortie de ce code C ?
#include <stdio.h>

int main()
{
    int j = -3;
    int a = j % 2;
    printf("%d\n", a);
}

A 0

B 1

C -1

D Erreur de compilation

C
L’opérateur % calcule le reste de la division entière. En C, le reste a le même signe que le dividende (le premier opérande). Ainsi, -3 % 2 donne -1, qui est ensuite affiché par printf().

 

2. Quelle est la sortie de ce code C ?
#include <stdio.h>

int main()
{
   int j = 3;
   int a = j / -2;
   int b = j % -2;
   printf("%d %d\n", a, b);
   return 0;
}

A -1 1

B 1 -1

C -1 0

D Erreur de compilation

A
En C, la division entière est tronquée vers zéro. Ainsi, 3 / -2 donne -1. Le reste est ensuite calculé avec l’opérateur % : 3 % -2 vaut 1, car le reste conserve le signe du dividende (3). Le programme affiche donc -1 1.

 

3. Quelle est la sortie de ce code C ?
#include <stdio.h>

int main()
{
   int j = 5;
   j = j / 3;
   printf("%d\n", j);
   return 0;
}

A 3

B 1

C 5

D Erreur de compilation

B
Les variables j et 3 sont de type int, donc l’opération 5 / 3 est une division entière. La partie décimale (1,666…) est supprimée, ce qui donne 1. La variable j prend donc la valeur 1, qui est ensuite affichée.

 

 

4. Quelle est la sortie de ce code C ?
#include <stdio.h>

int main()
{
   int j = -5;
   j = j / 3;
   printf("%d\n", j);
   return 0;
}

A -3

B -1

C -5

D Erreur de compilation

B
Les deux opérandes sont de type int, donc -5 / 3 est une division entière. En C (depuis C99), le résultat est tronqué vers zéro, ce qui donne -1. La variable j prend donc la valeur -1, qui est ensuite affichée.

 

5. Quelle est la valeur de « y » dans ce code?
#include <stdio.h>

void main()
{
   int y = 5 * 9 / 3 + 9;
}

A 24

B 3

C 2.68

D Dépend du compilateur

A
En C, les opérateurs * et / ont la même priorité et sont évalués de gauche à droite, avant l’opérateur +. Le calcul s’effectue donc ainsi : 5 * 9 = 45, puis 45 / 3 = 15, puis 15 + 9 = 24. La variable y prend donc la valeur 24.

 

6. Quelle est la valeur de « y » dans ce code?
#include <stdio.h>

void main()
{
   int y = 5.3 % 2;
   printf("Valeur de y est %d", y);
}

A Valeur de y est 0,3

B Valeur de y est 1

C Valeur de y est 2,3

D Erreur de compilation

D

Nous ne pouvons pas effectuer le modulo entre une valeur de type double et une valeur de type int. La sortie est comme suite :

$ gcc main.c
$ a.out
main.c: In function ‘main’:
main.c:5:21: error: invalid operands to binary % (have ‘double’ and ‘int’)
         int y = 5.3 % 2;
                     ^

Pour effectuer ce type d’opération nous utilisons la fonction « fmod() » qui se trouve dans la bibliothèque « math.h » comme suit:

#include <stdio.h>
#include <math.h>

void main()
{
    int y = fmod(5.3, 2) ;
    printf("Valeur de y est %d", y);
}

 

 

7. Quelle est la valeur de « b » dans ce code ?
#include <stdio.h>

void main()
{
   int a = 3;
   int b = 5 % 2 * 3 / 2;
   printf("Valeur de b est %d", b);
}

A Valeur de b est 3

B Valeur de b est 1

C Valeur de b est 2

D Erreur de compilation

B
Les opérateurs %, * et / ont la même priorité et sont évalués de gauche à droite. Le calcul se déroule ainsi : 5 % 2 = 1, puis 1 * 3 = 3, puis 3 / 2 = 1 (division entière). La variable b vaut donc 1, et le programme affiche Valeur de b est 1.

 

 

Laisser un commentaire

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