用C语言打印输出9*9/任意行数乘法口诀表

如何用C语言输出一个简单的9*9乘法口诀表?这是一个较为基础的题目,希望这篇文章对大家有一些帮助。 

首先我们先进行分析,要打印一个9*9的乘法口诀表,主要就是要正确打印其行和列。有了这一步认识,我们第一时间就会想到for循环。

所以我们先使用一个简单的循环来控制乘法口诀表的行数:

for (i = 1; i <= 9; i++)

接下来,我们再使用一个 for 循环来控制乘法口诀表的列数,关键点就在于要打印正确数量的等式。我们发现9*9乘法口诀表每一行打印的等式个数等于其行数,所以我们以 j <= i 为判断条件,最后将其打印。

for (j = 1; j <= i; j++)

完整代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
				printf("%d*%d=%d ", i, j, i*j);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

 

 

 

 

仔细观察程序运行的结果,大家可能会发现部分等式由于等号后数字发生变化导致错位,为了解决这个问题,我们只需将打印等式的代码做以下修改即可:

printf("%d*%d=%2d ", i, j, i*j);

 

 

其中 %2d 是C语言中printf函数的输出格式说明符。它会使输出的 int 型的数值以2位的固定位宽输出。如果不足2位,则在前面补空格;如果超过2位,则按实际位数输出。如果输出的数值不是 int 型,则进行强制类型转换为 int ,之后按上面的格式输出。

那么我们如何输出任意行数乘法口诀表呢?我们只需将控制行数的循环改成如下形式即可:

for (i = 1; i <= a; i++)

为了预防上面出现的错位现象,我们添加了一个循环来控制位宽输出:

	tmp = a*a;
	while (tmp)
	{
		tmp /= 10;
		count++;
	}

在最后打印等式时采用如下方式即可:

printf("%*d*%*d=%*d ", count, j, count, i, count, i*j);

运行时 * 的值会被替换成 count 的实时值。

完整代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main()
{
	int i = 0;
	int j = 0;
	int a = 0;
	int count = 0;
	int tmp = 0;
	scanf("%d", &a);
	tmp = a*a;
	while (tmp)
	{
		tmp /= 10;
		count++;
	}
	for (i = 1; i <= a; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%*d*%*d=%*d ", count, j, count, i, count, i*j);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值