用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
#include
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;
}

 

 

用C语言打印输出9*9/任意行数乘法口诀表_第1张图片

 

 

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

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

 

用C语言打印输出9*9/任意行数乘法口诀表_第2张图片

 

其中 %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
#include
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;
}


用C语言打印输出9*9/任意行数乘法口诀表_第3张图片

你可能感兴趣的:(C)