gpt4 book ai didi

c - 如何将一个数字的数字输出为整数,并且该数字可以精确整除另一个数字?

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

我必须将一个数字的数字输出为整数,该数字的数字可以使用函数 unsigned deldigits(unsigned num, unsigned short div) 精确除以另一个数字例如,如果 num=1234; div=2 ,然后是数字 1%2=1 (then i need the digit 1) , 2%2=0(take out) , 3%2=1 (then i need the digit 3) , 4%2=0 (take out) ,所以输出必须是 13作为整数。

不允许循环、globe/static 变量、数组或指针(也不允许使用库函数,但我先用它来测试)。我尝试使用另一个函数来帮助和仅通过递归处理所有函数。中间的计算是正确的,但是输出的整数不正确,我无法得到它。

unsigned deldigits(unsigned num, unsigned short div)
{
if(num == 0) return 0;

int digit = num / (digitPower(num)/10);
int modulo = digit % div;
printf("ziffer: %d div: %d modulo: %d\n", digit, div, modulo);

if(digitPower(num) == 0)
return 0;
return (digit*10 + deldigits(num - digit*(digitPower(num)/10), div));
}

int digitPower(int n)
{
if(n == 0) return 1;
return 10*digitPower(n/10);
}

int main()
{
unsigned n = 1234;
unsigned short d = 2;
int z = deldigits(n, d);
printf("deldigits: %d\n", z);
return 0;
}

主要功能只是测试功能和输出。在这种情况下,输出必须是 13 ,但现在我得到了错误的输出 120 。有人可以帮我吗?谢谢!

最佳答案

你把问题过于复杂化了。您可以使用

num % 10

获取数字的最后一位,然后检查它是否可以被div整除。如果是,您将其添加到您的答案中,并将基数增加 10,然后通过将 num 除以 10 来删除您刚刚检查的数字。然后重复,直到没有更多的数字。示例代码:

   int recursion(int num,int div,int base) {
int out = 0;
if(num) {
int digit = (num % 10);
printf("digit %i\n",digit);
if((digit % div) != 0) {
out += digit * base;
base *= 10;
}
out += recursion(num/10,div,base);
}
return out;
}

关于c - 如何将一个数字的数字输出为整数,并且该数字可以精确整除另一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58616338/

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