2013-09-24 88 views
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*/ 

當此程序運行時,第二個函數從1到512,這推動其餘的列向右移動2。我將如何去排列這些列?謝謝。格式化幫助中的命令提示符輸出C

回答

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 
+0

美麗的,正是我一直在尋找!謝謝。 –

1

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

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 
0

看看我的簡單庫:libtprint,代碼也很容易理解,你應該瞭解一些基本的想法如何格式化與列的printf()。

希望它有幫助!

0

試試這個

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

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