我正在尝试执行下面的代码,但随着我的回答我得到一些垃圾值。请帮我找出错误的地方。
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]);
}
}
答案 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)
在这里你可以解决这个问题。下次请描述你想要实现的目标