0

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

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

3 回答 3

2
 int a[100];

C 默认情况下不初始化数组元素。所以在你的第一个循环中没有分配的所有元素都会有垃圾。

你可以做的是:

 int a[100] = {0}; 

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

于 2013-10-13T09:21:22.513 回答
1

在 C 中,数组索引从0. 预增量++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]);
}
于 2013-10-13T09:23:39.437 回答
0

在此处输入图像描述

在这里你可以如何解决这个问题。下次请描述你想要达到的目标

于 2013-10-13T09:26:07.540 回答