簡體   English   中英

程序不起作用(前導零)

[英]Program does not work (leading zeroes)

您必須編寫一個迭代過程write_digit(d,x)來接收數字d和自然數x,並將x乘以數字d到標准輸出(cout)中。 例如,調用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和字符串。

#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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM