Lesson-6.md

January 4, 2013 · View on GitHub

Lesson 6 Print 9*9 multiplication table 乘法表

代码

#include <stdio.h>

int main(void)
{		
	int i, j;

	for (i = 1; i < 10; i++)
	{	
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%d\t", j, i, i * j);
		}
		printf("\n");
	}

	return 0;
}

Output:

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	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81	

知识点

  • 嵌套循环语句 for-for
  • 二层逻辑嵌套

扩展

#include <stdio.h>

int main(void)
{
	int i, j;
	
	for (i = 1; i < 10; i++)
	{	
		for (j = 1; j < 10; j++)
		{
			if (j > i)
				break;

			printf("%d*%d=%d\t", j, i, i * j);
		}
		printf("\n");
	}

	return 0;
}

知识点

  • break 用法
  • continue 用法

课堂讨论

  • 列举出5种场合,可以用 for-for 两重循环来解决的?
  • 示例中的 { } 是必须的吗,如果去掉内层或外层的 { } ,会有什么问题?
  • 如果用 while-while 两重循环来编写这个程序,如何实现?

课后练习

  • 打印1个5*5的棋盘(0表示空,1表示有子),用户输入1个位置(例如 2 3),重新打印棋盘。
  • 一个数各个约数(真约数)的和等于它本身的自然数叫做完全数(Perfect number)。
    (例如:6 = 1 + 2 + 3) 请找出1-1000以内的完全数。
  • 一个 n 位数 ( n≥3 ) 每个位上的数字的 n 次幂之和等于它本身的数叫做水仙花数。
    (例如:131^{3} + 535^{3} + 333^{3} = 153) 请找出 n = 3 的水仙花数。