Непонятные сообщения компилятора

Я несколько лет программировал на WindowsXP. Теперь пробую Linux Mint. И не понимаю. Использую следующий код:

#include <stdio.h>

int main()
{
    int n, 1;
    float num[100], sum = 0.0, average;
    
    printf("Введите количество элементов: ");
    scanf("%d", &n);
    
    while (n > 100 || n <= 0)
    (
        printf("Количество должно быть в пределах от 1 до 100.\n");
        printf("Введите количество еще раз: ");
        scanf("%d", &n);
    )
    
    //Заполняем массив и параллельно подсчитываем среднее арифметическое
    for(i = 0; i < n; ++i)
    {
        printf("%d, Введите число: ", i+1);
        scanf("%f", num[i]);
        sum += num[i];
    }
    
    average = sum/n;
    printf("Среднее = %.2f\n", average);
    
    return 0;
}

Источник: Кольцов Д.М. Эффективный Си на примерах.; стр.103

При компиляции получаю сообщения:

gcc -o test /media/andrew/k20190615_thi/Store_Projects/Projects_C/"Кольцов Эффективный Си на примерах"/43.c
/media/andrew/k20190615_thi/Store_Projects/Projects_C/Кольцов Эффективный Си на примерах/43.c: In function ‘main’:
/media/andrew/k20190615_thi/Store_Projects/Projects_C/Кольцов Эффективный Си на примерах/43.c:5:9: error: expected identifier or ‘(’ before numeric constant
    5 |  int n, 1;
      |         ^
/media/andrew/k20190615_thi/Store_Projects/Projects_C/Кольцов Эффективный Си на примерах/43.c:13:94: error: expected ‘)’ before ‘;’ token
   13 |   printf("Количество должно быть в пределах от 1 до 100.\n");
      |                                                                                              ^
      |                                                                                              )
/media/andrew/k20190615_thi/Store_Projects/Projects_C/Кольцов Эффективный Си на примерах/43.c:12:2: note: to match this ‘(’
   12 |  (
      |  ^
/media/andrew/k20190615_thi/Store_Projects/Projects_C/Кольцов Эффективный Си на примерах/43.c:16:3: error: expected ‘;’ before ‘for’
   16 |  )
      |   ^
      |   ;
......
   19 |  for(i = 0; i < n; ++i)
      |  ~~~

Ничего не понимаю!


Ответы (1 шт):

Автор решения: Harry

Похоже, в книге невнятно пропечаталось int n, 1;, и надо int n, i; — т.е. буква i, а не 1... Ну и скобочки после while не круглые. В scanf пропущен &...

#include <stdio.h>

int main()
{
    int n, i;
    float num[100], sum = 0.0, average;
    
    printf("Введите количество элементов: ");
    scanf("%d", &n);
    
    while (n > 100 || n <= 0)
    {
        printf("Количество должно быть в пределах от 1 до 100.\n");
        printf("Введите количество еще раз: ");
        scanf("%d", &n);
    }
    
    //Заполняем массив и параллельно подсчитываем среднее арифметическое
    for(i = 0; i < n; ++i)
    {
        printf("%d, Введите число: ", i+1);
        scanf("%f", &num[i]);
        sum += num[i];
    }
    
    average = sum/n;
    printf("Среднее = %.2f\n", average);
    
    return 0;
}

Я несколько лет программировал на WindowsXP

Точно?... На C?

→ Ссылка