Я делаю небольшую программу как упражнение, которая позволяет хранить до шести целых четных чисел, или если пользователь хочет закончить его только ввод 99, при в конце программы отображаются 6 сохраненных номеров.позволяют хранить до 6 четных чисел (нажмите 99 для завершения)
Проблема в том, когда нажата 99, она гаснет и отображает массив из 6 чисел, как и планировалось, однако последний номер массива (массив [5]) всегда равен 99, и я не могу найти причину это происходит.
Ниже приведен код программы:
#include <stdio.h>
int main(void)
{
int i; /*integer value*/
int count; /*even values counter defined as 6*/
int array[5] ; /*array where we will save the values*/
int pos = 0; /*array position*/
for (pos = 0; pos < 6; ++pos)
array[pos] = 0;
pos = 0;
for (count = 6 ; count > 0 ; --count)
{
do
{
puts("please write an even integer value or 99 to exit:");
fflush(stdin);
scanf("%d", &i);
if ((i%2) == 0)
array[pos++] = i;
;
} while((i % 2) != 0 && i != 99);
if (i == 99)
count = 0;
}
printf("\n\nThe even integer values you wrote are:\n\n");
for (pos = 0; pos <= 5; ++pos)
printf(" %d ", array[pos]);
return 0;
}
'int array [5]' не будет содержать 6 чисел, а доступ к 'array [5]' вызывает * неопределенное поведение *. Массив '[5]' индексируется из '0..4' и содержит ** пять **' int'; не шесть. Примечательно, что 'fflush (stdin)' нестандартен; найти другой способ очистки ваших входных данных. – WhozCraig
fflush (stdin) Я удалю его. Но в отношении массива я не согласен, поскольку, когда я ввожу в общей сложности 6 четных чисел, он определенно показывает 6-й, который является массивом [5]. Но так или иначе Как вы думаете, это может привести к тому, что 99 всегда будет на последней позиции? –
Ваше замешательство * наблюдается * поведение с * определенным * поведением. Как написано, ваша программа плохо сформирована и вызывает неопределенное поведение. Следовательно, результаты являются * без определения *. Не согласен, если хочешь, но нарушаешь правила. Без правил * ничего * может случиться, даже изредка, то, что вы надеялись. – WhozCraig