我的C语言之路3

时间:2021-12-14 04:59:00

对于这道题:输出9*9乘法口诀表,我们应该如何解决呢?

如果只是输出简单的表,我们给出以下代码:

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

}

问题迎刃而解,但是需要注意几个问题:首先要清楚为什么定义了变量j。因为我们发现每一行输出的表达式个数与行数有关,第几行就输出几个表达式,于是引入了变量j与行数做比较,运用循环结构输出表达式。其次这里表达式的形式为“%d*%d=%2d ”,“%2d”作用是加大表达式之间的空隙,使乘法表看起来更加美观。如果条件允许,我们也可以用“%d”或者“%3d”,“%4d”等等来书写。最后对于换行我们需要注意什么呢?如果直接写成“%d*%d=%2d\n”会发生什么呢?如下图:

我的C语言之路3


为什么会出现这种情况呢?因为如果写成“%d*%d=%2d\n”,则在输出每一个表达式之后都会执行换行的步骤。若以我们一定要单独写出“printf“\n””这一步骤,而且要写在for(j = 1; j <= i; j++)这一循环程序执行结束之后,表示:输出这一行所有的表达式之后换行。

那么,如果我们要输出更加好看的9*9乘法口诀表,如下图,该怎么做呢?

我的C语言之路3

我们可以发现在这个乘法口诀表中,多出了两个表边,分别输出了1到9。

要使程序输出这样的结果,再原程序的基础上肯定加上了两句话:printf(“%d”,i);和printf(“%d”,j);

那么此时i表示的是行,j表示的是列,则两个程序中的j的意思发生了变化。那么在这里j也要执行循环程序输出1到9,所以在原程序的基础上我们也要加上关于j的循环语句,即:

for(j = 1; j <= 9;j ++),之后i再与j进行比较,执行循环语句输出表达式。我们给出完整的代码:

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

        return 0;
}

注意几个换行语句的输入情况。

这样9*9乘法口诀表的输出就完成了,其中的不足还希望读到的人能联系我告知。