格式化C中命令提示输出的帮助

时间:2013-09-24 02:38:01

标签: c printf

#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*/

当这个程序运行时,第二个函数从1到512,推动其余列向右移动2。我该如何排队这些栏目?感谢。

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

不要取消所有准备好的2个答案,但许多选项可用于printf()

// Nicely aligned with decimal point in the same place
// #  : Alternate form always prints `.`
// -  : Left justify the output.
// .* : Determine width from the next parameter which is `n`.
printf("%d %4d %#-.*f\n", exponent, answer, n, 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.001953125

答案 2 :(得分: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

答案 3 :(得分:0)

看看我的简单库:libtprint,代码很容易理解,你应该得到一些基本的想法,如何使用printf()格式化列。

希望它有所帮助!

答案 4 :(得分:0)

试试这个

    float neganswer = 1.0f / (power(2,n));

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