c++ - 如何填充整数之间的分隔符而没有多余的分隔符?

标签 c++

我正在尝试获取正整数的因子。我想要的是8 = 2*2*2。但是,我得到的是 *2*2*2。我怎样才能乘坐第一个*?有没有一个标准的方法可以更好地描述这种情况?

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int num, i = 2;
    const char separator  = '*';
    cout << "Input a positive integer: ";
    cin >> num;
    while(num !=1){
        while((num % i) != 0){
            i++;
        }
        cout << setw(2) << setfill(separator) << i;
        num = num/i;
    }
}

Input a positive integer: 8

*2*2*2

最佳答案

使用更新的分隔符。从 "" 开始,然后设置为 "*"

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int num, i = 2;
    const char *separator  = "";
    cout << "Input a positive integer: ";
    cin >> num;
    do {
        while((num % i) != 0){
            i++;
        }
        cout << separator << i;
        separator  = "*";
        num = num/i;
    } while (num > 1);
}
<小时/>

还更改为do循环以应对num == 1num == 0,它们在OP的原始代码中不打印任何内容。代码可以使用unsigned作为进一步的扩展/保护。

关于c++ - 如何填充整数之间的分隔符而没有多余的分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735093/

相关文章:

c++ - 在 Python 中使用 Boost 图形库

c++ - GNU 海湾合作委员会 (g++) : Why does it generate multiple dtors?

c++ - 如何在 Win32 API C++ 中枚举网络适配器并获取它们的 MAC 地址?

c++ - 具有模板化类型的动态类型单例。这是一种可行的方法吗? [提供的解决方案]

c++ - 在 MOCK_METHOD 中匹配多个对象

c++ - 我们如何以恒定复杂度或 O(1) 交换 2 个数组?

c++ - 在复制构造函数和赋值运算符中删除私有(private)数组

C++ 11 范围基于带指针的语句

c++ - 抽象类中的静态函数

C++ 通过返回类型选择函数