想输出三角形格式的乘法表!
最开始想到的
#include<stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 9; i++)
{
for (j = i; j <= 9; j++)
printf("%d*%d =%d\n", i, j, i * j);
}
return 0;
}
输出为:
1*1 =1
1*2 =2
1*3 =3
1*4 =4
1*5 =5
1*6 =6
1*7 =7
1*8 =8
1*9 =9
2*2 =4
2*3 =6
2*4 =8
2*5 =10
2*6 =12
2*7 =14
2*8 =16
2*9 =18
3*3 =9
3*4 =12
3*5 =15
3*6 =18
3*7 =21
3*8 =24
3*9 =27
4*4 =16
4*5 =20
4*6 =24
4*7 =28
4*8 =32
4*9 =36
5*5 =25
5*6 =30
5*7 =35
5*8 =40
5*9 =45
6*6 =36
6*7 =42
6*8 =48
6*9 =54
7*7 =49
7*8 =56
7*9 =63
8*8 =64
8*9 =72
9*9 =81
发现右边对不齐,而且没有得到我想要的格式
于是我在printf里改了改:printf("%d*%d =%d\n", i, j, i * j);变成了 printf("%d*%d =%2d\n", i, j, i * j);
#include<stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 9; i++)
{
for (j = i; j <= 9; j++)
printf("%d*%d =%2d\n", i, j, i * j);
}
return 0;
}
输出为:
1*1 = 1
1*2 = 2
1*3 = 3
1*4 = 4
1*5 = 5
1*6 = 6
1*7 = 7
1*8 = 8
1*9 = 9
2*2 = 4
2*3 = 6
2*4 = 8
2*5 =10
2*6 =12
2*7 =14
2*8 =16
2*9 =18
3*3 = 9
3*4 =12
3*5 =15
3*6 =18
3*7 =21
3*8 =24
3*9 =27
4*4 =16
4*5 =20
4*6 =24
4*7 =28
4*8 =32
4*9 =36
5*5 =25
5*6 =30
5*7 =35
5*8 =40
5*9 =45
6*6 =36
6*7 =42
6*8 =48
6*9 =54
7*7 =49
7*8 =56
7*9 =63
8*8 =64
8*9 =72
9*9 =81
发现确实右边对齐了,但中间还存在空格(可以看出是2起了作用:%2d 表示 控制宽度为 2 个字符 (占 2 位),右对齐)
于是我还是在printf里改: printf("%d*%d =%2d\n", i, j, i * j);变成了 printf("%d*%d =%02d\n", i, j, i * j);
输出为:
1*1 =01
1*2 =02
1*3 =03
1*4 =04
1*5 =05
1*6 =06
1*7 =07
1*8 =08
1*9 =09
2*2 =04
2*3 =06
2*4 =08
2*5 =10
2*6 =12
2*7 =14
2*8 =16
2*9 =18
3*3 =09
3*4 =12
3*5 =15
3*6 =18
3*7 =21
3*8 =24
3*9 =27
4*4 =16
4*5 =20
4*6 =24
4*7 =28
4*8 =32
4*9 =36
5*5 =25
5*6 =30
5*7 =35
5*8 =40
5*9 =45
6*6 =36
6*7 =42
6*8 =48
6*9 =54
7*7 =49
7*8 =56
7*9 =63
8*8 =64
8*9 =72
9*9 =81
发现中间空格被0填上了;但格式还不符合(可以看出:%02d 表示 如果空位用0填充)
于是我又在printf后加了这么一句,并将二者括在了一起
#include<stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 9; i++)
{
for (j = i; j <= 9; j++)
printf("%d*%d =%02d\n", i, j, i * j);
printf("\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 9; i++)
{
for (j = i; j <= 9; j++)
printf("%d*%d =%02d\n", i, j, i * j);
printf("\n");
}
return 0;
}
输出为:
1*1 =01
1*2 =02
1*3 =03
1*4 =04
1*5 =05
1*6 =06
1*7 =07
1*8 =08
1*9 =09
2*2 =04
2*3 =06
2*4 =08
2*5 =10
2*6 =12
2*7 =14
2*8 =16
2*9 =18
3*3 =09
3*4 =12
3*5 =15
3*6 =18
3*7 =21
3*8 =24
3*9 =27
4*4 =16
4*5 =20
4*6 =24
4*7 =28
4*8 =32
4*9 =36
5*5 =25
5*6 =30
5*7 =35
5*8 =40
5*9 =45
6*6 =36
6*7 =42
6*8 =48
6*9 =54
7*7 =49
7*8 =56
7*9 =63
8*8 =64
8*9 =72
9*9 =81
可以看出:每当j结束一个循环便换行,达不到目标;
继续改:
只需将 printf("%d*%d =%02d\n", i, j, i * j); 改为 printf("%d*%d =%02d\t", i, j, i * j);即可
以下是输出结果:
1*1 =01 1*2 =02 1*3 =03 1*4 =04 1*5 =05 1*6 =06 1*7 =07 1*8 =08 1*9 =09
2*2 =04 2*3 =06 2*4 =08 2*5 =10 2*6 =12 2*7 =14 2*8 =16 2*9 =18
3*3 =09 3*4 =12 3*5 =15 3*6 =18 3*7 =21 3*8 =24 3*9 =27
4*4 =16 4*5 =20 4*6 =24 4*7 =28 4*8 =32 4*9 =36
5*5 =25 5*6 =30 5*7 =35 5*8 =40 5*9 =45
6*6 =36 6*7 =42 6*8 =48 6*9 =54
7*7 =49 7*8 =56 7*9 =63
8*8 =64 8*9 =72
9*9 =81
可以看出\n是换行,二\t是空出一些格子出来,这样更美观;
终于达到了我想要的结果!