gpt4 book ai didi

c - 处理数组元素的函数

转载 作者:行者123 更新时间:2023-11-30 16:23:58 26 4
gpt4 key购买 nike

我需要编写一个减去数字的函数。如果用户输入2345,则输出应为111(5-4、4-3、3-2);另一个示例是 683,其中输出应为 25(3-8(取绝对值)、8-6)。

我编写了以下代码,该代码仅在声明数组大小时才有效。

int subtraction(int arr[], int size) {
int sub = 0;
for (int i = 0; i < size-1; i++) {
sub = sub * 10 + abs(arr[i] - arr[i+1]);
}
return sub;
}

但是,用户输入的数字是随机的,并且可以有各种数字,所以我不知道在 for 循环中放置什么限制。

例如:

    int arr[] = {1, 2, 55, 56, 65, 135}, i;
subtraction(arr, 6);
for (i=0; i<6; i++)
printf("%d ", arr[i]);

预期输出:0 0 0 1 1 22

该函数应该从最后一个数字中减去倒数第二个数字,顺便说一句,/从右到左/从用户输入的随机数中;例如,如果输入是 5789,则输出应该是 211 (9-8, 8-7, 7-5);如果用户输入负数,程序应取其绝对值,然后进行减法。如果用户输入是一位数,则结果应为 0。

我编写的函数仅在声明数组大小时才有效。我不知道如何在未声明大小时使其工作(我相信需要指针和 malloc,因为这是我通过谷歌搜索很长时间才找到的,但不幸的是,我不知道该怎么做) .

请帮忙?

最佳答案

您实际上并没有更改任何值,这是您需要查看的行。

sub = sub * 10 + abs(arr[i] - arr[i+1]);

当您打印数组时,您实际上需要再次将计算值存储在数组中。

关于c - 处理数组元素的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53751593/

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