用C语言打印9*9乘法表

一:方块乘法表

当我们需要打印

             

可以通过for循环嵌套来实现,这里i是行变量,j是列变量。

​
​
for (i = 1; i < 3; i++)
{
	for (j = 1; j < 3; j++)
		printf("*  ");
	printf("\n");
}

​

​

这样的话,我们就可以按照这个思路,打出方块乘法表

	for (i = 1; i < 10; i++)
	{
		for (j = 1; j < 10; j++)
			printf("%d*%d=%-4d",j,i,i*j);
		printf("\n");
	}

 可以发现左下三角和右上三角是完整的乘法表,我们只需在这个基础上添加空格和条件即能实现;

左下三角是行数>=列数,右上三角是列数>=行数

二:左下三角乘法表

所以我们只需要加上if判断,只要行数>=列数的就可以打印;

int i = 1, j;
for (i=1;i<10;i++)
{ 
	for (j = 1; j <10; j++)
	{    if(j<=i)          //行>=列                                      //*(1,1)   *       *             (行,列)可以看出:行>=列
		 printf("%d*%d=%-4d",j,i,i*j);                                  //*        *(2,2)  *
	}                                                                   //*        *        *(3,3)
	printf("\n"); 
}

三:右下三角乘法表

只需要在左下三角的基础下,加空格就能实现。

第一行加8组空格,第二行加7组,......,第九行加0组;

一组所需空格数就是printf("%d*%d=%-4d", j, i, i * j);  所打印的字符数;

for (i = 1; i < 10; i++)
{
	for (j=8;j>=i;j--)            //打印空格
	{
		printf("        ");
	}
	for (j = 1; j < 10; j++)
	{
		if (j <= i)                                                       
			printf("%d*%d=%-4d", j, i, i * j);                                 
	}                                                                   
	printf("\n");
}

四:右上三角乘法表

右上三角只要列数>=行数就行,但是输出时默认是左对齐的,所以打印出来的是左上三角,要想得到右上三角,只需加上空格即可;

第一行加0组空格,第二行加1组空格.....第九行加8组空格;

	for (i = 1; i < 10; i++)
	{
		for (j=1;j<i;j++)
		{
			printf("        ");
		}
		for (j = 1; j < 10; j++)
		{
			if (i<=j)                                                       //*(1,1)       *(1,2)     *(1,3)             (行,列)可以看出:列>=行
				printf("%d*%d=%-4d", j, i, i * j);                          //*(2,1)       *(2,2)       *(2,3)              但输出时左对齐,所以是左上三角,因此需要添加空格
		}                                                                   //* (3,1)      *(3,2)       *(3,3)                 第一行添加0个,第二行1个,。。。,第九行8个
		printf("\n");
	}

五:左上三角乘法表

右上三角还没加空格,就是左上三角;

for (i = 1; i < 10; i++)
{
	for (j = 1; j < 10; j++)
	{
		if (i <= j)                                                       
			printf("%d*%d=%-4d", j, i, i * j);                           
	}                                                                     
	printf("\n");
}

六:完整代码

#include<stdio.h>  
//99乘法表,左下是行大于等于列,右上是列大于等于行,然后根据实际情况加空格即可
int main()
{    //左下三角
	int i = 1, j;
	for (i=1;i<10;i++)
	{ 
		for (j = 1; j <10; j++)
		{    if(j<=i)          //行>=列                                      //*(1,1)   *       *             (行,列)可以看出:行>=列
			 printf("%d*%d=%-4d",j,i,i*j);                                  //*        *(2,2)  *
		}                                                                   //*        *        *(3,3)
		printf("\n"); 
	}

	printf("\n");

	//右下三角,把左下三角1到8行输出空格,第一行8组,第二行7组,。。。第八行1组
	for (i = 1; i < 10; i++)
	{
		for (j=8;j>=i;j--)            //打印空格
		{
			printf("        ");
		}
		for (j = 1; j < 10; j++)
		{
			if (j <= i)                                                       
				printf("%d*%d=%-4d", j, i, i * j);                                 
		}                                                                   
		printf("\n");
	}


	printf("\n");
	printf("\n");

	//右上三角
	for (i = 1; i < 10; i++)
	{
		for (j=1;j<i;j++)
		{
			printf("        ");
		}
		for (j = 1; j < 10; j++)
		{
			if (i<=j)                                                       //*(1,1)       *(1,2)     *(1,3)             (行,列)可以看出:列>=行
				printf("%d*%d=%-4d", j, i, i * j);                          //*(2,1)       *(2,2)       *(2,3)              但输出时左对齐,所以是左上三角,因此需要添加空格
		}                                                                   //* (3,1)      *(3,2)       *(3,3)                 第一行添加0个,第二行1个,。。。,第九行8个
		printf("\n");
	}

	printf("\n");
	printf("\n");
	//左上三角就是右上三角还没加空格
	for (i = 1; i < 10; i++)
	{
		for (j = 1; j < 10; j++)
		{
			if (i <= j)                                                       
				printf("%d*%d=%-4d", j, i, i * j);                           
		}                                                                     
		printf("\n");
	}

}

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值