#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。我该如何排队这些栏目?感谢。
答案 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功能的更多信息,请参阅以下链接
答案 3 :(得分:0)
看看我的简单库:libtprint,代码很容易理解,你应该得到一些基本的想法,如何使用printf()格式化列。
希望它有所帮助!
答案 4 :(得分:0)
试试这个
float neganswer = 1.0f / (power(2,n));
printf("%d %3d %f\n", exponent, answer, neganswer);