-6
votes

pourquoi boucle itérer 6 fois mais la condition est donnée 5 fois

dans mon code selon la boucle for Condtion, il est clair qu'il ne doit itérer que 5 fois de 0 à 4. Mais il prend 6 entrées de l'utilisateur. Pourquoi cela se produit. Veuillez clarifier mon doute.

  #include <stdio.h>
#include <conio.h>
void main() {
  int i, num;
  clrscr();
  printf("Enter 5 elements in the array\n");
  for (i = 0; i < 5; i++) {
    scanf("%d\n", &num);
  }
  getch();
}


2 commentaires

Veuillez modifier le code dans votre question ( pas comme une image ).


Je viens de faire votre travail et j'ai rendu votre question lisible.


3 Réponses :


0
votes

La raison pour laquelle ce code attend 5 fois l'entrée de l'utilisateur est le getch() à la fin. Il attend l'entrée d'un caractère et est probablement utilisé pour empêcher la fenêtre du shell de se fermer directement après la fin du programme.


0 commentaires

1
votes

Selon votre code, je pense que vous mélangez les entrées que vous demandez avec la pause système créée par la fonction getch () que vous appelez à la fin. Le getch () initie une pause que vous pouvez facilement mélanger avec vos invites d'entrée car pendant cette pause, l'entrée utilisateur est possible mais non prise en compte. Je vous propose d'introduire une instruction dans la boucle qui indique la ligne ou certaines informations afin que vous puissiez faire la distinction.


0 commentaires

1
votes

Vous avez deux problèmes de saisie.

Le premier est l'appel getch à la fin du programme. Mais l'autre problème est la nouvelle ligne dans la chaîne de format scanf

scanf("%d\n",&num);

Lorsque la fonction scanf voit un espace dans la chaîne de format (le retour à la ligne est considéré comme un espace dans ce contexte), elle lit et supprime tous les espaces de l'entrée. Le problème avec un espace de fin dans une chaîne de format est que pour savoir quand les espaces dans l'entrée se terminent, il doit également y avoir une entrée non espace.

Donc (presque) jamais d'espace à la fin (espace, nouvelle ligne, retour chariot, tabulation) dans une chaîne au format scanf .


0 commentaires