C L oop пока условие не будет выполнено - PullRequest
0 голосов
/ 24 марта 2020

Я хочу написать al oop, который выполняется, пока пользователь не введет число больше 10, но я должен сделать что-то не так, потому что он создает бесконечное l oop.

int main()
{
    int a;
    printf("Enter 'a' value (min 10): ");
    scanf("%d",&a);
    for(int i=0;a<10;i++){
        printf("Enter value>10");
        i++;
        printf("%d",&a);
    }
    printf("Result:%d",a+a-2+a-4+a-6+a-8+a-10);
    return 0;
}

Ответы [ 4 ]

2 голосов
/ 24 марта 2020

Вы смешиваете индекс, который не имеет смысла. Также вы печатаете адрес памяти переменной вместо ее значения, не уверен, что это то, что вы хотели? Код частично исправлен (потому что я не знаю, какова ваша конечная цель):

#include <stdio.h>

int main()
{
    int a;

    do {
        printf("Enter 'a' value (min 10): ");
        scanf("%d",&a);
        printf("\na: %d\n",a);
    } while (a <= 10);
    printf("Result:%d\n",a+a-2+a-4+a-6+a-8+a-10);
    return 0;
}

ps: \ n - возврат строки и добавление do, в то время как вы хотите, чтобы выполнить al * 1005. * хотя бы один раз.

0 голосов
/ 24 марта 2020

Я думаю, что это код, который вы ищете: См. Комментарии

#include <stdio.h>
int main()
{

int a, ok = 0, end_of_input = 0;

do {

   printf("Please input an integer value (min. 10): ");
   fflush(stdout); // So the user can see the above line!
   switch(scanf("%d",&a)) {
   case EOF: // End of input - Give up!
     end_of_input = 1;
     break;
   case 1: // Got a number - Check it!
     if (a < 10) 
     {
       ok = 1;
     } else {
       printf("%d - Not appropriate input. Please try again.\n\n",a);
     }
     break;
   default: // Summat else - "eat" the input to the next line
      scanf("%*[^\n]\n"); // "eats" the rest of the line in the buffer w/o assignment
      break;
    }
  } while (end_of_input == 0 || ok == 0);
  if (ok) { // User entered a valid number
     printf("Got a that is smaller than ten %d\n", d);
  } else { // We have ran out of input
     printf("See you want to leave us :-(\n");
  }
  return 0;
}
0 голосов
/ 24 марта 2020

Я не уверен, чего вы пытаетесь достичь, но одна проблема, которую я обнаружил в вашей логике c, заключается в том, что вы предлагаете пользователю ввести данные за пределами l oop. Поэтому, когда вы вводите число меньше 10, оно всегда идет в бесконечной итерации.

Попробуйте следующий код, с scanf внутри l oop

int main()
{
    int a;
    printf("Enter 'a' value (min 10): ");
    scanf("%d",&a);
    int i=0;
    for(;a<10;){
        printf("Enter value>10");
        scanf("%d",&a);
        printf("%d",a);
        i++;
    }
    printf("Result:%d",a+a-2+a-4+a-6+a-8+a-10);
    return 0;
}
0 голосов
/ 24 марта 2020

Посмотрите на свой for-l oop: вы позволяете i начинаться с нуля, продолжаете до тех пор, пока a не станет меньше десяти, но это не значение a, которое вам нужно проверить это один из i.

Кроме того, вы делаете i++ в пределах вашего for-l oop, в то время как это уже описано в определении for-l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...