学99乘法表学到的一些知识

想输出三角形格式的乘法表!

最开始想到的

#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是空出一些格子出来,这样更美观;

终于达到了我想要的结果!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值