您的位置:首页 > 编程语言 > C语言/C++

我的C语言之路3

2016-03-17 13:21 309 查看
对于这道题:输出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”会发生什么呢?如下图:

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

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

我们可以发现在这个乘法口诀表中,多出了两个表边,分别输出了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乘法口诀表的输出就完成了,其中的不足还希望读到的人能联系我告知。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: