99乘法表打印版
本文转自:中国日报
近日,一位视频博主@猫der和饭饭的日常 分享自己在爱尔兰留学时的经历,引发网友热议。
她在一次演讲中无意间露了一手简单的数学计算,在黑板上用竖式算了一下23×32,结果在场的老师同学们都惊呆了。
图源: @猫der和饭饭的日常
系主任问博主中间的数是怎么算出来的,博主一脸懵,不就是九九乘法表吗。然后就发现英国和爱尔兰居然没有九九乘法表……
图源:@猫der和饭饭的日常
博主好奇,“那你们怎么算乘法呢?”系主任便开始在黑板上划横竖道道,然后数道道上交叉的点。
图源:@猫der和饭饭的日常
这文化冲击太过强烈,让双方都目瞪口呆。
系主任对乘法口诀大感兴趣,于是博主又科普起了中国祖传的九九乘法表(multiplication table)。
传颂千年的“九九歌”
其实,中国人 从春秋战国 时期就开始使用 九九乘法表了。
西汉《韩诗外传》记载,春秋时期齐桓公招揽人才,有人自称会九九乘法表。齐桓公笑道,这有什么了不起的啊?那人说,我只会这个您都聘任我,那还怕会没有人才投奔吗?
2002年湘西出土的3.7万枚里耶秦简中,就有3枚保存十分完整清晰的九九乘法表。而古时的乘法口诀是从“九九八十一”开始,到“一一如一”结束,与现在使用的顺序恰恰相反。因此,我们就取口诀开始的前两个字“九九”,便有了“九九歌”、“九因歌”、“九九乘法表”等称呼。
里耶秦简中的乘法表
外国人怎么算乘法?
中国人背乘法表,那么外国人怎么算乘法呢?
这一点开头的博主小姐姐也提到了,那就是用交叉线 (crossing lines)或是小棒将数字视觉化地呈现出来,再通过数交叉点的数量进行计算。不过,也有一些研究称,这一方法可能是从日本、中国或是印度传过来的。
双语君在这里给小伙伴们举个例子。如果我们想计算34×12,就要将两个数分别用线表示出来,其中代表十位数和个位数的线要分开。比如34,就是先在左边画三条线,再在右边画四条线。
图源:WikiHow
然后,在画好的线的垂直方向再用相同的方式表现第二个数字,我们就得到了很多交点。
这时,表示两个个位数的线的交点数量就是结果的个位数,表示个位数和十位数的线的交点数量就是结果的十位数,而表示两个十位数的线的交点数量就是结果的百位数。
图源:WikiHow
如果某一组的交点数量超过了九,那就往前进一位就好了。最后,我们就得出了34×12的结果。
图源:WikiHow
这个原理和竖式基本相同,不过确实为外国学生们省去了背乘法表的“麻烦”。但是很显然,一旦相乘的数字变大,这个方法麻烦了不止一点点。
九九乘法表“出口”到英国
英国人的算数,尤其是乘法的计算,一直都是他们的槽点之一。
比如在2015年,时任首相卡梅伦在伦敦一所学校做关于提高数学教学水平的演讲时,就被记者问了一道乘法题:“9乘以8是多少?”没想到,毕业于伊顿公学和牛津大学的卡梅伦也被难住了。
不过,多年前,英国学校就开始尝试引入中国的数学教学方法。
在2013年,一支由英国顶尖的25所中小学的校长和教导主任组成的考察团就来到宁波几所学校交流学习,在这里,他们也被九九乘法表“震惊”了。
而在2014年,中英两国启动了数学老师交流项目。其中,来自中国上海的数学老师就为英国小学生带来了包括九九乘法表在内的各种算数技巧和教学方法。
对此,《卫报》评论称,中国老师把“数学的艺术”带进了英国课堂(Chinese teachers bring the art of maths to English schools)。
图源:卫报
近年,英国教育部终于打算将九九乘法表在英国小学中普及。从2018年3月起,英国对29所小学的四年级学生进行了乘法表测试,参与测试的学生共有7250名。测试内容为12以内数字的互乘关系,而测试时间不会超过5分钟,以免给学生和老师带来额外负担。
图源:卫报
说到这里,小伙伴们可能会好奇,为什么英国推广的是12×12的乘法表,而不是我们学过的九九乘法表?
英国小学生使用的乘法表
据专家解释,这是因为汉语的个位数发音都是单音节,因此口诀的中文最多五个字,而且朗朗上口,更容易记忆。而用英文个位数的发音已经是多音节了,因此用英文背“九九八十一”,就成了“nine nine eighty one”,相对不易背诵。
同时,英语国家一直有着十二进制的传统,比如1英尺(foot)等于12英寸(inch)、1先令等于12便士、1打(dozen)等于12个等等,因此“12×12”的乘法表也更符合英国小学生们的习惯。
池媛晨1803用VB:打印出九九乘法表(要求有表头,格式对齐). -
赖恒届15844497066 ______ Private Sub Form_Click() Print Tab(35); "九九乘法表" Print Tab(35); "-----------" For i = 1 To 9 For j = 1 To i se = CStr(i) & "*" & CStr(j) & "=" & CStr(i * j) Print Tab((j - 1) * 9 + 1); se; Next j Print Next i End Sub
池媛晨1803写一个方法,用一个for循环打印九九乘法表 -
赖恒届15844497066 ______ Private Sub Form_Click() Dim i, j, k As Integer Print String(100, "*") '打印*号 Print Tab(45); "九九法则"'设置标题 Print String(100, "*") For i = 0 To 9 Print Tab(i * 8); i; '每8倍数位置打印0-9列 Next i Print For j = 1 To 9 Print j; '打印9行 ...
池媛晨1803C语言 打印出九九乘法表 -
赖恒届15844497066 ______ #include void main() { int i,j; printf(" "); for(i=1;i<10;i++) printf("%3d",i); printf("\n"); for(i=1;i<10;i++) { printf("%d",i); for(j=1;j<=i;j++) printf("%3d",i*j); printf("\n"); } }
池媛晨1803用VB程序打印小九九乘法表 -
赖恒届15844497066 ______ 小九九 for i=1to9 for j=1toi print i"*"j"="i*j next j print next i
池媛晨1803编写一个C程序,用于打印99乘法表. -
赖恒届15844497066 ______ #include<stdio.h> main() { int i,j,n; for(j=1;j<10;j++,printf("\n")) for(i=1;i<=j;i++) {n=i*j;printf("%2d*%2d=%2d",i,j,n);} } 希望你能够明白,一个程序是越精简越有价值http://blog.sina.com.cn/micuncang 上面还有好多精简版的程序
池媛晨1803用C#打印99乘法表 -
赖恒届15844497066 ______ int i; int j; for (i = 1; i < 10; i++) { for (j = 1; j <= i; j++) { Console.Write("{0}*{1}={2}\t", j, i, j * i); } Console.WriteLine(); Console.ReadLine(); }
池媛晨1803用c语言打印99乘法表4种三角形 -
赖恒届15844497066 ______ #include <stdio.h> int main() { int i,j; //左下角. for (i=1;i<10;i++) { for (j=1;j<10;j++) if(i>=j) printf("%d*%d=%-2d ",j,i,j*i); putchar('\n'); } //左上角. putchar('\n'); for (i=1;i<10;i++) { for (j=1;j<10;j++) if(i<=10-j) printf("%d*%d=%-2d ",j,10-i,j*(10-i));...
池媛晨1803用VB语言打印如下图所示九九乘法表: -
赖恒届15844497066 ______ 主语句: int a[10] //定义一个一维变量,里面10个变量 for(i=0;i
池媛晨1803VB九九乘法表
赖恒届15844497066 ______ <p>Print String(56, "-") '56个"-"</p> <p>Print Tab(25); "九九乘法表" '25个跳格键Tab之后,打印"九九乘法表"</p> <p>Print String(56, "-")</p> <p>For i = 0 To 9</p> <p>Print Tab(i * 6); i; '每隔6个跳格键Tab,打印i.如i=0时,在...
池媛晨1803T - SQL语句打印九九乘法表 -
赖恒届15844497066 ______ declare @d int,@kk varchar(500),@c int select @d=1 select @c=1 select @kk='' while @dbegin select @c=1 while @cbegin select @kk=@kk+char(10)+convert(varchar(200),@c)+'*'+convert(varchar(200),@d)+'='+convert(varchar(200),@d*@c) select @c=@c+1 end select @kk=@kk+char(10) select @d=@d+1 end print @kk