如何用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;
}