首页 > 解决方案 > 将用户输入值存储到数组中并显示它们会显示垃圾值

问题描述

我正在开发一个简单的程序,要求用户输入偶数并输入奇数。它们分别存储在数组storeItem1storeItem2。程序询问用户两次。问题出在我的输出上。我想显示用户输入的值

我将用于显示值的 for 循环的退出条件是if(!storeItem1)break;,一旦数组的当前元素为空,循环就会结束。然而,输出最终是这样的。

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

我不明白的是,一旦循环的迭代到达数组元素为空的部分,为什么条件不会终止循环?它不应该在显示所有不为空的数组值后结束吗?这是我的代码附在下面。提前致谢!

#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]);
    }

}

标签: carraysloopsstorage

解决方案


我很不好意思这么快回答我的问题。我修改了我的循环条件,

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<i and dis2<j和 一旦达到与 相同的值就会终止i and j

谢谢你们。


推荐阅读