gpt4 book ai didi

c - 确定、存储和打印给定范围内的所有整数

转载 作者:行者123 更新时间:2023-11-30 14:25:56 29 4
gpt4 key购买 nike

这是我做的:

#include <stdio.h>
#include <stdlib.h>

int betweenArray(int a, int b){
int *arr,i,range;
range = b - a + 1;
arr = (int *)malloc(range*sizeof(int));
for(i=0;i<range;i++){
arr[i] = a++;
}
return * arr;

int main (int argc, const char * argv[]) {
int a,b,i;
int range;

printf("Give numbers: ");
scanf("%d %d",&a,&b);
range = b - a + 1;


for(i=0;i<range;i++)
printf("%d\n",betweenArray(a,b));
return 0;
}

因此,当我运行此命令并给出示例 2 和 5 作为参数时,我得到的结果是:2 2 2 2 而不是 2 3 4 5。我找不到我在哪里犯了错误。

最佳答案

问题是您正在计算序列,但只返回它的第一个数字。

BetweenArray 的返回值是 int 而不是 int * 并且你可以使用 return * arr; 来代替return arr;。修复该问题后,在 main 中,您需要执行以下操作:

int *sequence = betweenArray(a,b);
for (i=0;i<range;i++)
printf("%d", sequence[i];

但是如果函数能够返回数组及其中元素的数量,那就更好了,例如:

int *betweenArray(int a, int b, int *numElements){
int *arr,i,range;
range = b - a + 1;
arr = (int *)malloc(range*sizeof(int));
for(i=0;i<range;i++){
arr[i] = a++;
}
if (numElements) {
*numElements = range;
}
return arr;
}

int main (int argc, const char * argv[]) {
int a,b,i;
int *sequence;
int range;

printf("Give numbers: ");
scanf("%d %d",&a,&b);

sequence = betweenArray(a,b,&range);

for(i=0;i<range;i++)
printf("%d\n",sequence[i]);

free(sequence); // Be nice, clean up.
return 0;
}

关于c - 确定、存储和打印给定范围内的所有整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9850411/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com