打印范围 [开始, 结束] 中所有可被 n 整除的数字。程序包含 3 个变量,开始、结束和 n 使用 C 编码。这就是我目前所拥有的,我不确定每次用户输入新的开始/结束值时如何分配内存。
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;
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);
}
该函数仅请求向量的大小,在您的情况下,据我所知,不需要其他东西。
我建议您返回 int,这样您就可以检查是否 分配是否成功完成
至少对我来说,size_t的定义是没有意义的。 Size_t是一个函数。Size_t是一个函数,因此,应该用括号( ex size_t() )调用它。括号内的内容是类型、变量或您想知道"大小"的东西。在我的代码中,它被用作sizeof(int),因为您想知道整数的大小,因此您可以分配"内存的整数块">
不要忘记在马洛克之前投掷。马洛克已返回虚空指针(虚空*)。这意味着如果要指向整数,则需要使用此强制转换 (int*)。
我打算如何调用该函数,但是,您应该考虑将 max+1 更改为最大值。对我来说,它使更多的逻辑。
for(int i = start; i<=end; i++){
if(i%n == 0){
printf("%d is divisible by %dn",i,n);
}
}
有一些伪代码可以让你开始。如果您的目标只是打印数字,则不需要动态内存。您只需要通过给定范围的循环[start, end]
.在里面,您需要一个条件来检查范围内的值是否可以被n
整除;研究 mod 运算符%
.