Le QCM en langage C peut être simulé dans un programme console en offrant plusieurs réponses à l’utilisateur, où il devra choisir en entrant un numéro correspondant à sa sélection. Bien qu’il ne soit pas possible d’implémenter des cases à cocher graphiques en langage C directement (puisque C est un langage de bas niveau qui fonctionne surtout en mode texte), nous pouvons simuler ce comportement en permettant à l’utilisateur de faire plusieurs sélections via des entrées multiples.
Voici un exemple simple de programme C pour un QCM avec plusieurs questions et des réponses multiples possibles :
#include <stdio.h>
void afficher_question(int numero_question, char* question, char* options[]) {
printf("Question %d: %s\n", numero_question, question);
for (int i = 0; i < 4; i++) {
printf("%d. %s\n", i + 1, options[i]);
}
printf("Entrez vos réponses (séparées par des espaces) et terminez par '0' : ");
}
int est_reponse_correcte(int reponses_utilisateur[], int bonnes_reponses[], int taille) {
for (int i = 0; i < taille; i++) {
if (reponses_utilisateur[i] != bonnes_reponses[i]) {
return 0; // Faux
}
}
return 1; // Vrai
}
int main() {
// Définir les questions et les options
char* questions[] = {
"Quels sont les langages de programmation ?",
"Quels sont les types de boucles en C ?"
};
char* options_q1[] = {"Python", "C", "HTML", "Java"};
char* options_q2[] = {"for", "while", "if", "do-while"};
int bonnes_reponses_q1[] = {2, 4}; // C et Java
int bonnes_reponses_q2[] = {1, 2, 4}; // for, while, do-while
int reponses_utilisateur[4];
int score = 0;
// Question 1
afficher_question(1, questions[0], options_q1);
// Lire les réponses
int index = 0;
while (1) {
scanf("%d", &reponses_utilisateur[index]);
if (reponses_utilisateur[index] == 0) {
break;
}
index++;
}
// Validation des réponses pour la question 1
if (est_reponse_correcte(reponses_utilisateur, bonnes_reponses_q1, 2)) {
score++;
}
// Réinitialiser pour la prochaine question
for (int i = 0; i < 4; i++) {
reponses_utilisateur[i] = 0;
}
index = 0;
// Question 2
afficher_question(2, questions[1], options_q2);
while (1) {
scanf("%d", &reponses_utilisateur[index]);
if (reponses_utilisateur[index] == 0) {
break;
}
index++;
}
// Validation des réponses pour la question 2
if (est_reponse_correcte(reponses_utilisateur, bonnes_reponses_q2, 3)) {
score++;
}
// Affichage du score
printf("Votre score : %d/2\n", score);
return 0;
}
afficher_question()
affiche les questions et les options.est_reponse_correcte()
compare les réponses de l’utilisateur avec les bonnes réponses.Ce programme vous permettra de créer un QCM en console C, avec la possibilité de sélectionner plusieurs réponses, simulant ainsi des cases à cocher.
Comment ajouter un chronomètre au QCM ?
Pour ajouter un chronomètre à votre programme de QCM en langage C, vous pouvez utiliser la bibliothèque standard <time.h>
, qui vous permet de gérer et mesurer le temps écoulé. L’idée est de mesurer le temps que l’utilisateur prend pour répondre à chaque question ou pour l’ensemble du QCM.
Voici comment vous pouvez implémenter un chronomètre qui limite le temps de réponse à chaque question.
#include <stdio.h>
#include <time.h> // Pour la gestion du temps
#define TEMPS_LIMITE 30 // Temps limite en secondes par question
void afficher_question(int numero_question, char* question, char* options[]) {
printf("Question %d: %s\n", numero_question, question);
for (int i = 0; i < 4; i++) {
printf("%d. %s\n", i + 1, options[i]);
}
printf("Entrez vos réponses (séparées par des espaces) et terminez par '0' : ");
}
int est_reponse_correcte(int reponses_utilisateur[], int bonnes_reponses[], int taille) {
for (int i = 0; i < taille; i++) {
if (reponses_utilisateur[i] != bonnes_reponses[i]) {
return 0; // Faux
}
}
return 1; // Vrai
}
int main() {
// Définir les questions et les options
char* questions[] = {
"Quels sont les langages de programmation ?",
"Quels sont les types de boucles en C ?"
};
char* options_q1[] = {"Python", "C", "HTML", "Java"};
char* options_q2[] = {"for", "while", "if", "do-while"};
int bonnes_reponses_q1[] = {2, 4}; // C et Java
int bonnes_reponses_q2[] = {1, 2, 4}; // for, while, do-while
int reponses_utilisateur[4];
int score = 0;
time_t debut, fin; // Variables pour le chronomètre
// Question 1
afficher_question(1, questions[0], options_q1);
// Chronométrage du temps de réponse
time(&debut); // Prendre le temps de départ
int index = 0;
// Lire les réponses jusqu'à ce que le temps soit écoulé ou que l'utilisateur entre "0"
while (1) {
time(&fin); // Prendre le temps actuel
if (difftime(fin, debut) >= TEMPS_LIMITE) {
printf("\nTemps écoulé !\n");
break;
}
scanf("%d", &reponses_utilisateur[index]);
if (reponses_utilisateur[index] == 0) {
break;
}
index++;
}
// Validation des réponses pour la question 1
if (est_reponse_correcte(reponses_utilisateur, bonnes_reponses_q1, 2)) {
score++;
}
// Réinitialiser pour la prochaine question
for (int i = 0; i < 4; i++) {
reponses_utilisateur[i] = 0;
}
index = 0;
// Question 2
afficher_question(2, questions[1], options_q2);
// Chronométrage du temps de réponse
time(&debut); // Prendre le temps de départ
while (1) {
time(&fin); // Prendre le temps actuel
if (difftime(fin, debut) >= TEMPS_LIMITE) {
printf("\nTemps écoulé !\n");
break;
}
scanf("%d", &reponses_utilisateur[index]);
if (reponses_utilisateur[index] == 0) {
break;
}
index++;
}
// Validation des réponses pour la question 2
if (est_reponse_correcte(reponses_utilisateur, bonnes_reponses_q2, 3)) {
score++;
}
// Affichage du score
printf("Votre score : %d/2\n", score);
return 0;
}
Bibliothèque <time.h>
:
time_t debut, fin;
:
time_t
pour stocker le temps de début (debut
) et le temps de fin (fin
).Fonction time()
:
time(&debut)
est utilisée pour obtenir le temps actuel, à un instant donné, et le stocker dans la variable debut
.Fonction difftime()
:
difftime(fin, debut)
calcule la différence de temps en secondes entre fin
(temps actuel) et debut
(temps de départ).Limitation de temps :
difftime(fin, debut)
) atteint ou dépasse la valeur définie dans #define TEMPS_LIMITE
(par exemple, 30 secondes), le programme interrompt la saisie des réponses et passe à la question suivante.Le programme donne à l’utilisateur 30 secondes pour répondre à chaque question. Si le temps est écoulé avant que l’utilisateur ne termine de répondre, un message s’affiche disant que le temps est écoulé, et le programme passe à la question suivante.
Voici un exemple de QCM (Questionnaire à Choix Multiples) sur le thème de la maintenance…
La gestion des mouvements d’entrée et de sortie des marchandises est essentielle pour assurer une…
La méthode ABC en gestion des stocks est une technique de classement qui permet d'optimiser…
Télécharger une Application gestion de stock gratuit Excel 👇🟡🟢 Ce modèle Application gestion de stock…
La gestion des réapprovisionnements est un aspect clé de la gestion des stocks. Elle consiste…
La gestion des mouvements d’entrée et de sortie des marchandises est essentielle pour assurer le…
This website uses cookies.