c++ - 如何在不使用堆栈或数组的情况下从 int 中提取每个数字? (C++)

标签 c++ loops int modulo

我有一个作业,我想在输入数字(例如 90621)时打印特定代码。我想按顺序提取该数字并打印代码,例如:提取数字 9 打印代码 --> 提取0(按顺序)。

问题是我只知道如何以相反的顺序提取数字(例如:先提取 1,然后提取 90621 的 2),但我不确定如何按顺序进行。我在这里看到一些帖子,人们将数字转换为字符串,但我不能这样做,因为我正在调用的函数之一将 int 作为参数。到目前为止,我们也只介绍了循环和 if 函数等基础知识,所以我不确定如何使用堆栈或数组。

到目前为止,这是我提取数字和打印代码的代码:

string barCode(int zip){
    string result;
    int n;
    while (zip > 0){
        n = zip % 10;
        result += codeForDigit(n);
        zip = zip / 10;
    }

    return result;
}

关于函数的一些信息: - 函数 codeForDigit(int digit) 接受一位数字并返回该数字的代码。 - barCode(int zip) 通过将数字分成单独的数字、对该数字进行编码并将其添加到字符串返回值来返回完整的条形码。

最佳答案

一种简单的方法是通过递归。事实上,它非常优雅。你可以这样写:

string barCode(int zip)
{
    if (zip <= 0) return "";
    return (barCode(zip / 10) + codeForDigit(zip % 10));
}

基本上,您使用调用堆栈作为存储先前字符串的堆栈。这也是编写此函数的最小方式。

关于c++ - 如何在不使用堆栈或数组的情况下从 int 中提取每个数字? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46329647/

相关文章:

c++分配* new Object()以引用

C++ struct 默认构造函数 mbed

javascript - 不带数组的循环组件

c++ - 为什么有人使用 int 数据类型?

java - 整数可以是原始的,但assertTrue 变得不明确 - 如何满足这两个要求?

Java:找不到适合 Scanner(int) 的构造函数

c++ - 性能崩溃 C++(std vector bad_allocation)

c++ - 如何在 --help 输出中显示命令行操作符描述

python - 在 for 循环中返回所有值

c - 如何将此函数转换为更好的函数(例如循环)?