1

我有一个小问题,我的程序运行良好,直到它到达最后一步,ascanf要求继续循环。问题是此扫描不起作用,但以下系统(“cls”)有效。异步时看起来像javascript。

这是代码。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  char elegir_dificultad;
  int dificil = 1;

  printf("Desea que se le indique si el numero es menor o mayor? \n s/n \n");
  scanf("%c",&elegir_dificultad);
  if(elegir_dificultad == 's'){
      dificil = 0;
  }
  while(1){
      int aleatorio, cont, introducido;
      cont = 1;
      aleatorio = rand()%101;
      printf("%d",aleatorio);
      int fallo = 1;
      while(fallo){
          printf("Introduce el numero, intento numero %d \n", cont);
          scanf("%d",&introducido);
          if(introducido == aleatorio){
                  fallo = 0;
          }
          if(cont == 10){
                  break;
          }
          if(!dificil){
              if(introducido < aleatorio){
                  printf("El numero introducido es menor que el aleatorio \n");
              }
              if(introducido > aleatorio){
                  printf("El numero introducido es mayor que el aleatorio \n");
              }                 
          }
          if(fallo){
          cont++;
          }
      }
      char continuar;
      if(fallo){
         printf("Has perdido... el numero era %d \n Quieres repetirlo? s/n \n",aleatorio);
         scanf("%c",&continuar); 
         if(continuar=='n'){
               break;              
         }     
         system("cls"); 
      }else{
         printf("°Has ganado! el numero era %d \n Quieres repetirlo? s/n \n",aleatorio);  
         scanf("%c",&continuar); 
         if(continuar=='n'){
               break;              
         }     
         system("cls");   
      }
  }

  system("PAUSE");  
  return 0;
}
4

1 回答 1

0

这个问题是因为\n前面留下的字符scanf%c在每个说明符之前放置一个空格scanf来吃掉\n。.

scanf(" %c", &introducido);   
...
scanf(" %c",&continuar); 
于 2013-10-10T18:55:14.600 回答