前两天上课的时候,老师让输出个九九乘法表。
但是实际输出会觉得怪怪的,没对齐,尝试下对齐吧。
这样也不是不行是吧,哈哈。
1 2 3 4 5 6 7 8 9
| printf("1x1=1"); printf("2x1=2 2x2= 4"); printf("3x1=3 3x2= 6 3x3= 9"); printf("4x1=4 4x2= 8 4x3=12 4x4=16"); printf("5x1=5 5x2=10 5x3=15 5x4=20 5x5=25"); printf("6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36"); printf("7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49"); printf("8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64"); printf("9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81");
|
没对齐的版本
1 2 3 4 5 6 7 8 9 10 11 12
| #include <stdio.h> int main() { int i,j; for(i = 1; i <= 9; i++) { for(j = 1; j <= i; j++) { printf("%dx%d=%d ", i, j, i*j); } printf("\n"); } return 0; }
|
对占位符格式化输出
就用乘法表作为例子,
输出的是 Int(%d),
需要对一位数的结果进行扩展,让它能够对齐下面的两位数数字。
格式化输出格式:% (-/0) [位宽 n] . [精度 m] d
格式中我增加了空格,方便阅读,实际代码中不能有空格哦。
解释一下:
位宽 n:输出的内容占命令行的 n 个字符宽度,比如:[4](n=1),[ 4](n=2)
精度m:小数点后保留几位(貌似默认是 6 好像),比如 printf("%.2f", 3.1415);
输出的是3.14
-/0:这一部分是对自定义格式的一个补充。
%d 就没有必要设置精度了哈,三个格式化可以独立使用,但是要设置精度的话记得加上 Dot(.) 哦!
比如:
可以在电脑上试试看这些的输出,更好地理解下。
改进后的版本
- 靠右对齐:
1 2 3 4 5 6 7 8 9 10 11 12
| #include <stdio.h> int main() { int i,j; for(i = 1; i <= 9; i++) { for(j = 1; j <= i; j++) { printf("%dx%d=%2d ", i, j, i*j); } printf("\n"); } return 0; }
|
1x1= 1
2x1= 2 2x2= 4
3x1= 3 3x2= 6 3x3= 9
4x1= 4 4x2= 8 4x3=12 4x4=16
5x1= 5 5x2=10 5x3=15 5x4=20 5x5=25
6x1= 6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1= 7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1= 8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1= 9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
- 补零版本:
1 2 3 4 5 6 7 8 9 10 11 12
| #include <stdio.h> int main() { int i,j; for(i = 1; i <= 9; i++) { for(j = 1; j <= i; j++) { printf("%dx%d=%02d ", i, j, i*j); } printf("\n"); } return 0; }
|
1x1=01
2x1=02 2x2=04
3x1=03 3x2=06 3x3=09
4x1=04 4x2=08 4x3=12 4x4=16
5x1=05 5x2=10 5x3=15 5x4=20 5x5=25
6x1=06 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=07 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=08 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=09 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
- 靠左对齐:
1 2 3 4 5 6 7 8 9 10 11 12
| #include <stdio.h> int main() { int i,j; for(i = 1; i <= 9; i++) { for(j = 1; j <= i; j++) { printf("%dx%d=%-2d ", i, j, i*j); } printf("\n"); } return 0; }
|
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81