Я работаю над простой программой, которая просит пользователя ввести четное число и ввести нечетное число. Они хранятся в массивах storeItem1
и storeItem2
соответственно. Программа спрашивает пользователя дважды. Проблема с моим выводом. Я хочу отобразить значения, введенные пользователем .
Моим условием выхода для значения l oop, которое я буду использовать для отображения значений, является if(!storeItem1)break;
, которое завершает l oop когда текущий элемент массива равен нулю. Однако вывод заканчивается следующим образом.
Even Numbers Are: 2
Even Numbers Are: 4
Even Numbers Are: some garbage value
Odd Numbers Are: 1
Odd Numbers Are: 3
Odd Numbers Are: some garbage value
Что я не понимаю, так это почему условие не завершает l oop, когда итерация l oop достигает той части, где элемент массива является нулевым? Не должно ли это закончиться после отображения всех значений массива, которые не равны нулю? Вот мой код, прикрепленный ниже. Заранее спасибо!
#include<stdio.h>
main(void)
{
int storeItem1[8], storeItem2[8], even, odd;
int i=0, j=0, dis=0, dis2=0;
do
{
printf("Input Even Number: ");
scanf("%d",&even);
storeItem1[j]=even;
printf("Input Odd Number: ");
scanf("%d",&odd);
storeItem2[j]=odd;
++j;
++i;
}while(i<2); //asks user to input twice
//display the stored values
for(dis;dis<8;++dis) //display all input even numbers
{
if(!storeItem1[dis])break; //exits loop when current array element is null
printf("\nEven Numbers are: %d",storeItem1[dis]);
}
for(dis2;dis2<8;++dis2) //display all input odd numbers
{
if(!storeItem2[dis2])break; //exits loop when current array element is null
printf("\nOdd Numbers are: %d",storeItem2[dis2]);
}
}