在 C 中使用数组进行模除法,Malloc(免费)

Modulus Division With Arrays in C, Malloc (Free)

打印[start,end]范围内所有能被n整除的数。程序包含 3 个变量,Start、End 和 n 使用 C 编码。这是我到目前为止所拥有的,我不确定每次用户输入新的 start/end 值时如何分配内存。

size_t  = end;
    int *a = malloc((max+1) * sizeof *a);
    if (a) {
        for (size_t i = 0; i <= max; i++){
            a[i] = i;
        free(a);
        }
    }
    return 0;
for(int i = start; i<=end; i++){
    if(i%n == 0){
        printf("%d is divisible by %d\n",i,n);
    }
}

有一些伪代码可以帮助您前进。如果您的目标只是打印数字,则不需要动态内存。您只需要遍历给定范围 [start, end]。在内部,您需要一个条件来检查范围内的值是否可以被 n 整除;研究 mod 运算符 %

size_t = end;

这条线与我有关。我建议你这样做:

int function(int max){
    int *a = (int*) malloc ( (max+1) * sizeof(int));
    if (a){
        for (int i = 0 ; i<=max ; ++i){
            a[i] = i;
        }
    free(a);
    return (1);
    }
return (0);
}
  • 该函数仅请求向量的大小,据我所知,在您的情况下,不需要其他任何东西。

  • 我建议你有一个 return 到 int,这样你就可以检查是否 分配是否成功

  • 它没有意义,至少对我来说,size_t的定义。 Size_t 是一个函数。 Size_t 是一个函数,因此,调用它时应使用括号 ( ex size_t() )。括号内的内容是类型、变量或您想知道的内容 "size of"。它在我的代码中用作 sizeof(int),因为您想知道整数的大小,所以您可以分配 "integer blocks of memory"

  • 不要忘记在 malloc 之前进行转换。 Malloc 具有指向空指针 (void*) 的 return。这意味着如果您要指向一个整数,则需要使用此转换 (int*)。

  • 我怎么调用这个函数,但是,你应该考虑把max+1改成max。对我来说,它使更多的逻辑。