Modulo Opérateur en C
-
Utiliser l’opérateur modulo
%
pour calculer le reste dans la division en C -
Utiliser l’opérateur
%
Modulo pour implémenter la fonction de vérification des années bissextiles en C -
Utiliser l’opérateur modulo
%
pour générer des nombres aléatoires dans l’intervalle de nombres entiers donné en C
Cet article présente plusieurs méthodes d’utilisation de l’opérateur modulo en C.
Utiliser l’opérateur modulo %
pour calculer le reste dans la division en C
Modulo %
est l’un des opérateurs arithmétiques binaires du langage C. Il produit le reste après la division de deux nombres donnés. L’opérateur Modulo ne peut pas être appliqué aux nombres à virgule flottante comme float
ou double
. Dans l’exemple de code suivant, nous présentons le cas le plus simple possible pour l’utilisation de l’opérateur %
, en imprimant les résultats module 9
du tableau int
donné.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int arr[8] = {10, 24, 17, 35, 65, 89, 55, 77};
for (int i = 0; i < 8; ++i) {
printf("%d/%d yields the remainder of - %d\n", arr[i], 9, arr[i] % 9);
}
exit(EXIT_SUCCESS);
}
Production :
10/9 yields the remainder of - 1
24/9 yields the remainder of - 6
17/9 yields the remainder of - 8
35/9 yields the remainder of - 8
65/9 yields the remainder of - 2
89/9 yields the remainder of - 8
55/9 yields the remainder of - 1
77/9 yields the remainder of - 5
Utiliser l’opérateur %
Modulo pour implémenter la fonction de vérification des années bissextiles en C
On peut aussi utiliser l’opérateur %
pour mettre en œuvre des fonctions plus complexes. L’exemple de code suivant montre une fonction booléenne “année bissextile” qui vérifie si l’année donnée est bissextile ou non. Notez qu’une année est considérée comme une année bissextile si sa valeur est divisible par 4 mais pas par 100. De plus, si la valeur de l’année est divisible par 400, il s’agit d’une année bissextile.
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
bool isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return true;
else
return false;
}
int main(void) {
uint year = 2021;
isLeapYear(year) ? printf("%d is leap\n", year)
: printf("%d is not leap\n", year);
exit(EXIT_SUCCESS);
}
Production :
2021 is not leap
Utiliser l’opérateur modulo %
pour générer des nombres aléatoires dans l’intervalle de nombres entiers donné en C
Une autre caractéristique utile de l’opérateur modulo est de limiter le plancher supérieur des nombres pendant le processus de génération des nombres aléatoires. À savoir, supposons que nous ayons une fonction qui génère l’entier aléatoire. Dans ce cas, nous pouvons prendre le reste de la division entre le nombre retourné et la valeur dont nous avons besoin pour être le maximum (définie comme macro MAX
dans l’exemple suivant). Notez que l’utilisation des fonctions srand
et rand
pour la génération de nombres aléatoires n’est pas une méthode robuste, et les applications nécessitant des nombres aléatoires de qualité devraient employer d’autres moyens.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define COUNT 10
#define MAX 100
int main(void) {
srand(time(NULL));
for (int i = 0; i < COUNT; i++) {
printf("%d, ", rand() % MAX);
}
printf("\b\b \n");
exit(EXIT_SUCCESS);
}
Production :
3, 76, 74, 93, 51, 65, 76, 31, 61, 97
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook