程序不起作用(前导零)

时间:2016-10-16 10:56:16

标签: c++ formatting

你必须编写一个迭代程序write_digit(d,x),它接收一个数字d和一个自然数x,并在标准输出(cout)中写入数字d的x倍。例如,调用write_digit(3,5)写入33333,而调用write_digit(5,3)写入555。

我对此代码有疑问,它与前导零有关。例: write_digit(0,3) - > 000 - >我的输出:0(不出意外)

如果我被允许使用iomanip

,问题将在1分钟后得到解决
if (d == 0) cout << setw(x) << setfill('0') << "";

但是,我只能使用iostream和string。

#include <iostream>

using namespace std;

void write_digit(int d,int x) {
    int original_d = d; 
    for (int i = 1; i < x; ++i) d = d*10 + original_d;
    if (x == 0) cout << "";
    else cout << d;
}

int main () {
    int d,x;
    cin >> d >> x;
    write_digit(d,x);
}

1 个答案:

答案 0 :(得分:1)

你完全过于复杂的分配,只是做一个没有任何边缘条件的简单循环,它适用于任何数字,即使是非数字。

void write_digit(int d, int x) {
    for (int i = 0; i < x; ++i) // Loop x times
        std::cout << d;         // Output digit
    std::cout << '\n';          // Output newline
}