c - 如何将数字的数字输出为整数,这些数字可以精确地划分另一个数字?
问题描述
我必须将一个数字的数字输出为整数,这个数字的数字可以用函数精确除另一个数字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;
}
推荐阅读
- python - 在pygame中无法让球反弹
- python - 创建一个 3x3 网格
- tkinter - 如何在 tkinter 上放置图像
- sql-server - 我收到一个错误“关键字'where'附近的语法不正确”
- flutter - 如何使我的页面在颤动中持久化?
- python - 单击kivy中的按钮后如何创建对象?
- azure - Azure VM 中用于 PostgresSQL 的本机 Azure 数据库与 PostgresSQL 停靠容器
- swift - 由于偏差的维度,前馈神经网络无法分类
- roslyn-code-analysis - 在 DiagnosticAnalyzer 的操作回调中,如何获取派生 SyntaxNode 的文档或项目?
- java - N个数字的所有可能组合以求和X