首先我们要知道口诀表的排版:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
......
我们发现根据相乘的数字逐渐递增,口诀表的行数和列数也在递增。
于是我们就想到编写一个循环来完成9*9乘法口诀表。
构建这个循环的想法就是:如果数字逐渐递增,那么行数和列数也会递增。
那让我们一起来编写这个代码吧!
首先是很容易犯的错误,就是打印出来的代码和我们想排版的代码不一样,就比如下面这个代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;//定义行
int j = 0;//定义列
for (i = 1; i <= 9; i++)//控制行数
{
for (j = 1; j <= 9; j++)//控制列数
{
printf("%d*%d =%2d ",i,j, i*j);//打印
}
}
return 0;
}
当我们运行起来之后发现打印出来是这样的:
并不符合我们的预期,我们虽然写的代码是没问题的,但我们忽略了排版的美观问题。
于是,我们可以在每一次循环结束一次时打印一次换行,这样就会和我们预期的一样,接下来就是在外层循环加上printf("\n");
代码修改好了如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)//控制行数
{
for (j = 1; j <= 9; j++)
{
printf("%d*%d =%d ",i,j, i*j);
}
printf("\n");
}
return 0;
}
打印出来的就和我们预期的一样啦
如果我们想更美观一点的话,这里推荐在输出的中使用2d%或者-2d%
%2d 是右对齐
%-2d 是左对齐
最终我们的代码和运行窗口就是这样的:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)//控制行数
{
for (j = 1; j <= 9; j++)
{
printf("%d*%d =%2d ",i,j, i*j);
}
printf("\n");
}
return 0;
}
运行窗口:
这样就完美解决我们的问题啦!
如果对你的问题有帮助的话,点个赞再走吧~