1

これは古い慣習であり、コードのどこで問題が発生したかを特定しようとしています: putchar のみを使用して整数を出力する ac プログラムを作成します。私はそれを行う正しい方法の1つを知っています:

void printnumber(int n)
{

    if (n < 0) {
        putchar('-');
        n = -n;
    }

    if (n == 0)
        putchar('0');

    if (n/10)
        printnumber(n/10);

    putchar(n%10 + '0');
}

なぜ私のやり方がうまくいかないのか知りたいのですが、ステップオーバーを使ってデバッグしようとしていたので、手順に問題はないように見えますが、コードは面白い文字を出力しています. putchar() が数値を ascii 値として読み取り、ascii 値に対応する文字を出力するためだと思いました。これが上記のコードで を使用している理由である可能性があるため、すべての putchar コードにputchar(n%10+'0')追加しようとしましたが、'0'正しく動作しません。だからここに私のコードと結果があります'0'i=-123

void printnumber(int i)
{

    if(i/10!=0)
    {
        putchar(i%10);
        printnumber((i-i%10)/10);
    }
    else if((i/10==0) && (i%10!=0) && (i>0))
        putchar(i%10);
    else if((i/10==0) && (i%10!=0) && (i<=0))
        putchar(-i%10);

}

ここに画像の説明を入力

ここに画像の説明を入力

4

2 に答える 2