C Хотя цикл не завершается правильно - PullRequest
0 голосов
/ 15 марта 2019

Я должен пройти университетский курс по Си, и я прочитаю некоторые целые числа с циклом while.Код:

#include <stdio.h>
#define max 100

int main(){
  int a[max];
  int i,n;

  printf("Enter the number of persons: ");
  do{
    scanf("%i", &n);
  }while((n < 1) || (n > max));

  i = 0;
  while (i < n){
    printf("Enter the age of the %i th Person", i+1);
    scanf("%i", &a[i]);
    i = i + 1;
  }
 /* further code */

Он компилируется (с помощью компилятора gcc), но как только я попадаю в цикл, он правильно считывает числа, но после последнего ввода больше ничего не выполняется.

Ответы [ 3 ]

3 голосов
/ 15 марта 2019

Инициализация i

int i = 0;
int n;

[править: теперь я вижу, что вы отредактировали свой код, как я предлагал]

0 голосов
/ 15 марта 2019

у меня сначала есть значение мусора, сначала вы должны написать

i=0 
, а затем
scanf("%d", &n);
Поскольку вы вызываете цикл while со значением мусора i в начале, и код выполняется, если статистика любимого пользователя удовлетворяет
while((n < 1) || (n > max))
но я не имею значения, поэтому вы не увеличиваете его.Думай о сумме, считай, я уверен, ты понимаешь, о чем я.если вы хотите что-то увеличить, вы должны сначала определить.Целое число, которое я определил без значения, не может быть увеличено.Используйте для цикла в последнем цикле, вместо while
0 голосов
/ 15 марта 2019

Инициализация i = 0

Вот рабочий код.

#define max 5 
int main()
{
    int a[max];
    int i = 0,n;

    printf("Enter the number of persons:\n");
    do{
        scanf("%d", &n);
    }while((n < 1) || (n > max));

    while (i < n){
        printf("Enter the age of the %i th Person:\n", i+1);
        scanf("%i", &a[i]);
        i = i + 1;
    }

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