Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 需要帮助将循环中的整数值存储到数组中吗_C - Fatal编程技术网

C 需要帮助将循环中的整数值存储到数组中吗

C 需要帮助将循环中的整数值存储到数组中吗,c,C,我想把一个数的所有因子都列成一个数组。所以,这是我的尝试 #include<stdio.h> #define n1 10 int main() { int n,i,j,a[n1]; printf("Enter num: "); scanf("%d",&num); for(i=1;i<n;i++){ if(n%i==0){ for(j=0;j<n;j++) 我不知道如何从这里开始。我很困

我想把一个数的所有因子都列成一个数组。所以,这是我的尝试

#include<stdio.h>
#define n1 10
int main()
{
     int n,i,j,a[n1];
     printf("Enter num: ");
     scanf("%d",&num);
     for(i=1;i<n;i++){
        if(n%i==0){
           for(j=0;j<n;j++)
我不知道如何从这里开始。我很困惑

#include<stdio.h>
#define n1 10
int main()
{
        int n,i,j,a[n1];
        printf("Enter number : ");
        scanf("%d",&n);
        j = 0;
        for(i=1;i<n;i++){
                if(n%i==0)
                        a[j++] = i;
        }
        printf("The factors of the number are: ");
        for(j=0;j;j++)
                printf("%d\n",a[j]);
}

我想你要找的是:

for(i=0, j=0;i<n;i++)
    if(n%i==0)
        a[j++] = i;

// print it
for (i=0; i<j; i++)
    printf("%d ",a[i]);

你已经很接近了,但是内部循环似乎毫无意义。一旦找到一个因子,只需存储它,并记录找到的因子数量:

 int factors(int n, int *factors)
 {
  int j = 0;
  for (int i = 2; i < n; ++i)
  {
    if (n % i == 0)
    {
      factors[j++] = i;
    }
  } 
  return j;
}
我在471113上运行了这个,得到了[1932441]的结果


请注意,这受到int的最大精度的限制,应该使用无符号long,并且对于实际代码更安全。

0可以是一个因子吗?我不知道我们可以使用增量运算符作为数组的下标。谢谢。@Kohila索引必须是一个整数表达式,您可以在任何表达式中使用任何运算符,数组索引不是特例。请检查第二段代码@unwind Now,我有一个问题。我试图打印并显示这些因素,但我无法为第二个for循环提供良好的条件。如果我给j@Kohila您应该只使用从0到j的循环,不包括j,即int k=0;k