首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从右到左从整数减去数字

从右到左从整数减去数字
EN

Stack Overflow用户
提问于 2021-01-18 00:47:08
回答 2查看 68关注 0票数 1
代码语言:javascript
复制
#include <stdio.h> 
  
void printDigit(int n) 
{ 
    int d; 
    int temp;
    int temp2;
    if (n == 0) { 
        return; 
    } 
    d = n % 10; 
    printf("%d ", d);
    printDigit(n / 10); 
} 

int main() 
{ 
    int n = 755545; 
  
    printDigit(n); 
    return 0; 
} 

因此,我需要从右到左减去每个数字,例如5-4=1,4-5=-1,然后像xxxx -11那样打印它们。我尝试了一些东西,比如在那里获得一个临时int,但我需要在每次递归时都改变它。

编辑:对于输入数字755545,输出应为-2 0 0 -1 1。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-18 01:17:55

下面是完整的函数

代码语言:javascript
复制
int subDigits(int number){
    if(number>0){
        int temp = number;
        temp = temp / 10;
        digits(number/10);
        if(temp>0) {
            cout << number % 10 - temp % 10 << " ";
        }
    }
}




int main() {
    subDigits(1562);
    return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2021-01-18 01:28:25

您不需要临时变量来存储前一个数字。表达式(n / 10) % 10将给出前一位数。if(n / 10 == 0)确保递归提前一个深度结束,从而使表达式(n / 10) % 10始终有效。

代码语言:javascript
复制
#include <stdio.h> 
  
void print_digit(int n)
{
    if(n / 10 == 0) return;
    print_digit(n / 10);
    printf("%d ", (n % 10) - (n / 10 % 10));
    
}

int main() 
{ 
    int n = 755545; 
    print_digit(n);
    
    return 0; 
} 

让我们以数字755545为例,在传递75值时会遇到exit语句。流程是这样的:

代码语言:javascript
复制
755545
|- 75554
 |- 7555
  |- 755
   |- 75
     print (75 % 10) - (75 / 10 % 10) = 5 - 7 =      -2
  |- print (755 % 10) - (755 / 10 % 10) = 5 - 5 =     0
 |- print ( 7555 % 10) - (7555 / 10 % 10) = 5 - 5 =   0
|- print (75554 % 10) - (75554 / 10 % 10) = 4 - 5 =  -1
print (755545 % 10) - (755545 / 10 % 10) = 5 - 4 =    1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65763341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档