我在c中得到了这个概率的垃圾值

时间:2013-10-13 09:18:33

标签: c

我正在尝试执行下面的代码,但随着我的回答我得到一些垃圾值。请帮我找出错误的地方。

int main()
{
    int n,i,j,k=0;
    int a[100];
    printf("Enter a number:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        if(n%i==0)
        {
            a[++k]=i;
        }
    }
    for(j=0;a[j]!='\0';j++)
    {
         printf("\t%d",a[j]);
    }
}

3 个答案:

答案 0 :(得分:2)

 int a[100];

默认情况下,C不会初始化数组元素。因此,在第一个循环中未分配的所有元素都将具有垃圾。

你能做的是:

 int a[100] = {0}; 

这会将所有元素初始化为0

答案 1 :(得分:1)

在C数组中,索引从0开始。 preincrement ++k将导致从1开始数组索引。将其更改为k++。也改变

 for(j=0;a[j]!='\0';j++)  

 for(j=0;j < k;j++)

打印您输入的唯一值。
你的代码应该是

 for(i=1;i<=n;i++)
{
    if(n%i==0)
    {
        a[k++]=i;
    }
}
for(j=0; j < k;j++)
{
     printf("\t%d",a[j]);
}

答案 2 :(得分:0)

enter image description here

在这里你可以解决这个问题。下次请描述你想要实现的目标