3

1つのステートメントを使用してユーザーから6つの浮動小数点数を読み取るプログラムを作成しています。次に、次のすべての要件を使用して、6つの数字を3行で印刷します。

(1)数字は読み取ったのと逆の順序で印刷されます

(2)3行にあります:最初の行に1つの番号、次の行に2つの番号、最後の行に3つの番号

(3)数字を並べて、小数点の後に1桁の、右寄せの列形式にします。


これが最初の2つの要件に対する私の試みです

#include <stdio.h>

int main(void)

{
    //variable definitions
    float f1,f2,f3,f4,f5,f6;

    printf ("Enter 6 float numbers, separated by commas: ");

    scanf ("%f1,%f2,%f3,%f4,%f5,%f6",&f1,&f2,&f3,&f4,&f5,&f6);

    printf ("%f6\n",f6);
    printf ("%f5,%f4\n",f5,f4);
    printf ("%f3,%f2,%f1\n",f3,f2,f1);

    return 0;

}

私の初心者の心には、それは完全に理にかなっています。

これが私がそれを実行したときの結果です

カンマで区切って6つの浮動小数点数を入力します:0.2、3.2、0.1、0.5、0.6、0.7

番号は次のとおりです。

-107374176.0000006

-107374176.0000005、-107374176.0000004

-107374176.0000003、-107374176.0000002,0.2000001

何かキーを押すと続行します 。。。

最後のものを除いて、それらはすべてガベージ出力です。すべての助けに感謝します!

4

3 に答える 3

6

あなたのフォーマット

scanf ("%f1,%f2,%f3,%f4,%f5,%f6",&f1,&f2,&f3,&f4,&f5,&f6);

1最初のコンマの後とfloat次のコンマの前、次のコンマの2後などが必要です。

そのはず

scanf ("%f,%f,%f,%f,%f,%f",&f1,&f2,&f3,&f4,&f5,&f6);

区切り桁が指定されていないため、2番目の変換(およびそれ以降)は失敗し、他floatの変換は初期化されないままでした。

于 2013-01-21T20:20:26.733 に答える
2

問題は次の形式にあります。

scanf ("%f1,%f2,%f3,%f4,%f5,%f6",&f1,&f2,&f3,&f4,&f5,&f6);

する必要があります

scanf ("%f,%f,%f,%f,%f,%f",&f1,&f2,&f3,&f4,&f5,&f6);
于 2013-01-21T20:21:06.577 に答える
1

浮動小数点数を出力する正しい形式は次のとおりです。

printf("%.1f", variable);

この例では、の数値variableは小数点以下1桁で印刷されます。

于 2013-01-21T20:21:34.447 に答える