程序不工作(前导零)

Program does not work (leading zeroes)

本文关键字:工作 程序      更新时间:2023-10-16

您必须编写一个迭代过程write_digit(d,x),它接收一个数字d和一个自然数x,并在标准输出(cout)中写入x倍的数字d。例如,调用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);
}

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

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
}