Scanf работает через раз - C (СИ) (79980)

Узнай цену своей работы

Формулировка задачи:

Подскажите, почему в 42 строчке scanf пропускается?
#include <stdio.h>
#include <stdlib.h>   /* для rand(), srand() */
#include <time.h>     /* для time() */
 
#define TRUE 1
#define SIZE 4
 
char *pGood[SIZE] = {"Очень хорошо!\n", "Превосходно!\n", 
                "Отличная работа!\n", "Продолжайте в том же духе!\n"};
char *pBad[SIZE] = {"Нет. Пожалуйста пробуйте снова.\n", 
        "Неправильно. Попытайтесь ещё раз.\n", "Не сдавайтесь!\n",  
                "Нет. Продолжайте пробывать\n"};
int main(void)
{
   int var1, var2;   /* для хранения двух случайных чисел */
   int result, tmp; 
   char x = 'Y';
   srand(time(NULL));   /* засееваем генератор чисел */
   
   while(TRUE)
   { 
      var1 = 1 + rand() % 9;
      var2 = 1 + rand() % 9;
 
      while(TRUE)
      {
         printf("Сколько будет %d умножить на %d?\n", var1, var2);
         scanf("%d", &result);
  
         if(var1 * var2 == result)
         { 
            tmp = rand() % SIZE;
            printf("%s", pGood[tmp]);
            break;
         }
         else
         {
            tmp = rand() % SIZE;
            printf("%s", pBad[tmp]);
         }
      } /* конец while(TRUE) */
 
      printf("Ещё? [Y/n]");
      scanf("%c", &x);
 
      switch (x)
      {
         case 'Y':
         case 'y':
            break;
         case 'N':
         case 'n':
            return 0;  /* выход из программы */
         default:
            printf("Недопустимое значение\nВыход из программы...");
            return 0;
      } /* конец switch */
 
   }/* конец while(TRUE) */
 
   return 0;
}
Вот вывод программы
Сколько будет 5 умножить на 9?
45
Продолжайте в том же духе!
Ещё? [Y/n]Недопустимое значение
Выход из программы...

Решение задачи: «Scanf работает через раз»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main()
{
    char str[64] = "hello";
    
    strcpy(str, strchr(str, '1'));
    printf("%s\n", str);
    return 0;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами и строками
  2. Объявление переменной типа int с именем main и пустой функцией
  3. Объявление массива символов (строки) типа char с именем str и инициализация его значением hello
  4. Копирование значения из строки, на которую указывает символ '1' в строку str с помощью функции strcpy
  5. Вывод значения переменной str с помощью функции printf
  6. Возвращение 0 из функции main, что означает успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы