我需要正确对齐我的数字。我在处理一位和三位数字长的 float 时遇到问题。这是我的输出:
ID G1 G2 G3 Average
000000065 92.000000 93.000000 86.000000 90.333336
000000101 85.500000 75.500000 90.000000 83.666664
000002202 100.000000 92.000000 87.250000 93.083336
000022227 96.000000 84.000000 75.500000 85.166664
000031303 99.000000 87.000000 62.000000 82.666664
101010010 0.000000 81.000000 91.000000 57.333332
424242428 77.000000 77.000000 87.500000 80.500000
700666124 88.000000 65.000000 89.000000 80.666664
812345676 95.000000 76.000000 87.000000 86.000000
999999999 99.000000 99.500000 100.000000 99.500000
这是我的打印功能:
//function that prints out contents of tree
int print_tree (NodePtr treePtr){
// if statement begins
if (treePtr != NULL){
print_tree(treePtr->left);
printf( "%.9d %f %f %f %f\n\n", treePtr->studentID, treePtr->g1, treePtr->g2, treePtr->g3, treePtr->average);
print_tree(treePtr->right);
}//if statement ends
return 0;//indicates successful termination
}//end print_tree
如您所见,由于一位和三位长的 float ,一些数字没有正确排列(我需要打印 float )。
Here is a good tutorial on using format specifiers for spacing
一个简单的例子:使用格式说明符,例如:
printf("%5.3f", 13.3423452);
在你的情况下使用:
"%09d"for integers,09 将保证使用 9 个空格,用 0 填充
例如:对于 123,将打印 000000123。
"%9.7f"for float, 9 Guarantees field will at least 9 wide, 7 will give 7 digits after "."
当然在每行的最后一列添加一个\n。
代码示例:假设我有以下输入,格式如下所示:
printf("%20.7f\n", 1213.342345287867587);
printf("%20.7f\n", 13.342);
printf("%20.7f\n", 1213.342345287867587);
printf("%20.7f\n", 1213.342345287867587);
printf("%020d", 3);
输出看起来像这样:
注意:,每列宽度为 20。 (因为格式规范中的前 20 个。)
float 用指定的空格填充以对齐数字。
整数用 0 填充以对齐。 (因为 020 格式规范。)
我是一名优秀的程序员,十分优秀!