0
#include <stdio.h>
#include <stdlib.h>

int power(int base, int power){
    int result, i;
    result = 1;
    for (i=0; i < power; i++){
        result *= base;
    }/*for*/
    return result;
}/*power*/

int main (){
    int n = 0;

    int exponent = 0;
    while(n < 10){
        int answer = power(2, n);
        float neganswer = 1.0 / (power(2,n));

        printf("%d %d %g\n", exponent, answer, neganswer);

        exponent++;
        n++;
    }/*while*/
    return EXIT_SUCCESS;

}/*main*/

このプログラムを実行すると、2 番目の関数が 1 から 512 になり、残りの列が 2 つ右に移動します。これらの列を並べるにはどうすればよいですか? ありがとう。

4

5 に答える 5

3

printfフォーマットを次のように変更できます。

printf("%d %3d %10g\n", exponent, answer, neganswer);

これにより、引数が特定の幅にフォーマットされます。

0   1          1
1   2        0.5
2   4       0.25
3   8      0.125
4  16     0.0625
5  32    0.03125
6  64   0.015625
7 128  0.0078125
8 256 0.00390625
9 512 0.00195312
于 2013-09-24T02:46:09.787 に答える
1

stdout に書き込まれるテキストを含む C 文字列。必要に応じて、後続の追加引数で指定された値に置き換えられ、要求どおりにフォーマットされる埋め込みフォーマット指定子を含めることができます。

フォーマット指定子は、このプロトタイプに従います: [以下の互換性に関する注意を参照してください]

%[flags][width][.precision][length]specifier 

int main (){
    int n = 0;

    int exponent = 0;
    while(n < 10){
        int answer = power(2, n);
        float neganswer = 1.0 / (power(2,n));

        //modify printf("%d %d %g\n", exponent, answer, neganswer);
        printf("%d %4d %12g\n", exponent, answer, neganswer);

        exponent++;
        n++;
    }/*while*/
    return EXIT_SUCCESS;

}/*main*/

printf 関数の詳細については、次のリンクを参照してください。

http://en.cppreference.com/w/c/io/fprintf

于 2013-09-24T02:55:31.187 に答える