gpt4 book ai didi

c++ - 如何在 C++ 中将数字拆分为数字

转载 作者:行者123 更新时间:2023-12-01 14:36:42 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Converting integer into array of digits [closed]

(4 个回答)


1年前关闭。




我知道在 Stack Overflow 上也有类似的问题。我已经检查过了。这里有两点:

  • 该数字将是用户的输入,因此我不知道该数字实际包含多少位
  • 我不想直接打印数字,我需要对每个数字做一些进一步的处理,所以我需要一种方法来保存或分配每个数字。
    例如,如果用户输入 1027,我需要返回 1、0、2、7,并且不打印。这就是我的问题开始的地方。
    如果可以打印,我会这样写:

  • int x;
    cin>>x;
    while(x != 0)
    {
    cout<<x%10<<endl;
    x/=10;
    }
    提前感谢任何提示或帮助。

    最佳答案

    这取决于您需要它的顺序。如果您需要最低有效数字(最右边)到最高有效数字(最左边),那么您的解决方案几乎就在那里

    int x = ...
    while(x != 0)
    {
    int current = x % 10; // get rightmost digit
    x /= 10;
    // process 'current', or store in a container for later processing
    }
    如果您需要最重要(最左边)到最不重要(最右边),那么您可以递归地执行此操作:
    void for_each_digit(int input)
    {
    // recursive base case
    if (input == 0) { return; };

    int current = input % 10
    for_each_digit(input / 10); // recurse *first*, then process
    // process 'current', add to container, etc
    }

    // ...


    int x = ...
    for_each_digit(x);
    编辑:我显然错过了关于返回一系列数字的部分。
    任何一种方法都有效。如果从右到左,则需要先反转容器。如果您进行递归,则需要将每个值附加到容器中。

    关于c++ - 如何在 C++ 中将数字拆分为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62640525/

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