c с несколькими входами вместо одного входа [дубликат]

Причина этого: когда ваши поля объектов могут быть пустыми, реализация Object.equals может быть болью, потому что вам нужно отдельно проверить значение null. Использование Objects.equal позволяет выполнять проверки равных с помощью NULL-чувствительности, не рискуя исключением NullPointerException. Objects.equal("a", "a"); // returns true Objects.equal(null, "a"); // returns false Objects.equal("a", null); // returns false Objects.equal(null, null); // returns true

1
задан Bill Lynch 14 June 2015 в 17:37
поделиться

3 ответа

Ваши циклы должны быть

for (count=0;count<SIZE;count++)

Индексация массива - 0, основанная на C.

Так как в вызове scanf() есть пробельный чат (\n) , он ожидает, что вы введете символ без пробелов для завершения каждого вызова. Удалите \n:

   for (count=0;count<SIZE;count++){
    scanf("%d",&myArray[count]);
}
4
ответ дан P.P. 26 August 2018 в 08:14
поделиться

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

Этот цикл работает ровно 2 раза:

for (count=1;count<=SIZE;count++){
        scanf("%d\n",&myArray[count]);
    }

Но поскольку вы использовали \n в scanf() этот scanf() ждет, пока вы не дадите пробелы.

Proper Input code:

for (count=0;count<SIZE;count++){
        scanf("%d",&myArray[count]);
    }

И когда он возвращает массив, он возвращает только два числа

Ваш исходный код вывода правильно печатает первый номер, но ваш второй номер - значение мусора.

Proper Output Code:

for (count=0;count<SIZE;count++){
        printf("The values of myArray are %d\n",myArray[count]);
    }

So Полный код выглядит следующим образом:

//C How to Program Exercises 2.23
#include <stdio.h>
#include <conio.h>
#define SIZE 2

int main (void){

    int myArray[SIZE];
    int count;
    printf("Please enter 5 integers\n");
    for (count=0;count<SIZE;count++){
        scanf("%d",&myArray[count]);
    }
    for (count=0;count<SIZE;count++){
        printf("The values of myArray are %d\n",myArray[count]);
    }
    getch();

    return 0;
}
1
ответ дан bappi48 26 August 2018 в 08:14
поделиться

C массивы индексируются начиная с 0, а не от 1. C автоматически не выполняет проверку границ доступа к массиву, и, действительно, ваш код хорошо сформирован. Тем не менее, его поведение во время выполнения undefined из-за его использования выражения элемента массива для записи вне границ этого массива и, отдельно, из-за его использования выражения элемента массива для чтения за пределами границ из этого массива.

Поскольку программа определенно демонстрирует неопределенное поведение при каждом запуске, абсолютно ничего нельзя сказать о том, что она должна делать. Если на практике вы наблюдаете тройку ввода, повторяющуюся три раза, то вероятным объяснением является то, что вторая итерация перезаписывает значение переменной count. Учитывая порядок, в котором объявлены переменные, это правдоподобное проявление неопределенного поведения в игре.

Выходной цикл, с другой стороны, повторяет то же количество раз, что вы ему сказали: один раз с count == 1 и еще раз с count == 2. Это ни в коем случае не гарантируется с учетом общей неопределенности исполнения вашей программы, но речь идет о наименее неожиданном поведении , о котором я могу думать.

1
ответ дан John Bollinger 26 August 2018 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: