C 将用户输入值存储到数组中并显示它们将显示垃圾值
我正在编写一个简单的程序,要求用户输入偶数和奇数。它们分别存储在数组C 将用户输入值存储到数组中并显示它们将显示垃圾值,c,arrays,loops,storage,C,Arrays,Loops,Storage,我正在编写一个简单的程序,要求用户输入偶数和奇数。它们分别存储在数组storeItem1和storeItem2中。程序询问用户两次。问题在于我的输出。我想显示用户输入的值 如果(!storeItem1)中断,则用于显示值的for循环的退出条件为一旦数组的当前元素为空,它将结束循环。然而,输出结果是这样的 Even Numbers Are: 2 Even Numbers Are: 4 Even Numbers Are: some garbage value Odd Numbers Are: 1 O
storeItem1
和storeItem2
中。程序询问用户两次。问题在于我的输出。我想显示用户输入的值
如果(!storeItem1)中断,则用于显示值的for循环的退出条件为代码>一旦数组的当前元素为空,它将结束循环。然而,输出结果是这样的
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
我不明白的是,为什么循环的迭代到达数组元素为null的部分时,条件不终止循环?它不应该在显示所有非空数组值后结束吗?这是我的代码附在下面。提前谢谢
#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]);
}
}
#包括
主(空)
{
int-storeItem1[8],storeItem2[8],偶数,奇数;
int i=0,j=0,dis=0,dis2=0;
做
{
printf(“输入偶数:”);
scanf(“%d”&偶数);
storeItem1[j]=偶数;
printf(“输入奇数:”);
scanf(“%d”&奇数);
storeItem2[j]=奇数;
++j;
++一,;
}虽然(i我很不好意思这么快回答我的问题。我修改了我的循环条件
for(dis;dis<i;++dis)
{
//if(!storeItem1[dis])break; //exits loop when current array element is null
printf("\nEven Numbers are: %d",storeItem1[dis]);
}
for(dis2;dis2<j;++dis2)
{
//if(!storeItem2[dis2])break; //exits loop when current array element is null
printf("\nOdd Numbers are: %d",storeItem2[dis2]);
}
for(dis;dis如果(!storeItem1[dis]),NateEldredge不会识别数组中的其他值包含垃圾值吗?不,如果(!storeItem1[dis]),您的测试if(!storeItem1[dis])
只测试storeItem1[dis]
是否为零。这与编写if(storeItem1[dis]==0)
完全相同。垃圾值当然可以非零。例如,它可能是57。感谢@NateEldredge的澄清,我真的必须从更细微的资源中研究数组。