现在的小学生从二年级上学期开始学习九九乘法口诀表,不知道大家想过这个问题没有,就是为什么乘法口诀表是十进制的呢?当然是因为我们从小学习算术是从十进制记数开始的,但是为什么人们选择了十进制来记数呢?

实际上,以十为基底的十进制数字可以变成任何其它基底的数字,一般规则是,假如目标数基底为S,用S连续除以十为基底的整数Z,所的的与数将是在以S为基底的系统中的数码。

既然选择任何一个基底都可以,那么究竟选择那个基底最合适呢?太小的基底有它的不方便之处,而大的基底要求记住更多的数字符号,并且乘法表更大。最终人们选择十作为基底不是没有原因的,回溯到文明初期,人们就开始使用十进制计数了,而且毋庸置疑这是由于我们只有十个手指头进行计算的缘故。

如果人们习惯算上脚趾,说不定也会发展出20进制的计算系统,下面一段程序就是产生二十进制乘法口诀表的程序:

#include <fstream>
#include <iostream>
#include <sstream>
#include <string.h>
using namespace std;string twentysignal(int a)
{stringstream ss;ss << a;string s1 = ss.str();if(a == 10)return "A";else if(a == 11)return "B";else if(a == 12)return "C";else if(a == 13)return "D";else if(a == 14)return "E";else if(a == 15)return "F";else if(a == 16)return "G";else if(a == 17)return "H";else if(a == 18)return "I";else if(a == 19)return "J";elsereturn s1;
}string twentytrans(int a)
{int b, c;b = a%20;c = a/20;string result;if(c == 0)result = twentysignal(b);elseresult = twentysignal(c) + twentysignal(b);return result;
}int main(void)
{ofstream fout("matrix.txt");int i, j;int data[19][19];memset(data, 0x00, 19*19);for(i = 0; i < 19; i ++){for(j = 0; j < 19; j ++){data[i][j] = (i + 1) * (j + 1);//fout.fill('0');//fout.precision(2);fout.width(2);fout << twentytrans(data[i][j]) << " ";}fout << endl;}fout.close();return 0;
}

编译后运行:

得出,二十进制的乘法口诀表如下:

 1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  G  H  I  J 2  4  6  8  A  C  E  G  I 10 12 14 16 18 1A 1C 1E 1G 1I 3  6  9  C  F  I 11 14 17 1A 1D 1G 1J 22 25 28 2B 2E 2H 4  8  C  G 10 14 18 1C 1G 20 24 28 2C 2G 30 34 38 3C 3G 5  A  F 10 15 1A 1F 20 25 2A 2F 30 35 3A 3F 40 45 4A 4F 6  C  I 14 1A 1G 22 28 2E 30 36 3C 3I 44 4A 4G 52 58 5E 7  E 11 18 1F 22 29 2G 33 3A 3H 44 4B 4I 55 5C 5J 66 6D 8  G 14 1C 20 28 2G 34 3C 40 48 4G 54 5C 60 68 6G 74 7C 9  I 17 1G 25 2E 33 3C 41 4A 4J 58 5H 66 6F 74 7D 82 8B A 10 1A 20 2A 30 3A 40 4A 50 5A 60 6A 70 7A 80 8A 90 9A B 12 1D 24 2F 36 3H 48 4J 5A 61 6C 73 7E 85 8G 97 9I A9 C 14 1G 28 30 3C 44 4G 58 60 6C 74 7G 88 90 9C A4 AG B8 D 16 1J 2C 35 3I 4B 54 5H 6A 73 7G 89 92 9F A8 B1 BE C7 E 18 22 2G 3A 44 4I 5C 66 70 7E 88 92 9G AA B4 BI CC D6 F 1A 25 30 3F 4A 55 60 6F 7A 85 90 9F AA B5 C0 CF DA E5 G 1C 28 34 40 4G 5C 68 74 80 8G 9C A8 B4 C0 CG DC E8 F4 H 1E 2B 38 45 52 5J 6G 7D 8A 97 A4 B1 BI CF DC E9 F6 G3 I 1G 2E 3C 4A 58 66 74 82 90 9I AG BE CC DA E8 F6 G4 H2 J 1I 2H 3G 4F 5E 6D 7C 8B 9A A9 B8 C7 D6 E5 F4 G3 H2 I1 

总结

为了使用二十进制,我们需要再对“A,B,C,D,E,F,G,H,I,J”共十个符号进行命名并且记住,这还不够,我们还需要对20个20,20个20个20,等等整数单位进行命名,何其麻烦。


结束!

产生任意进制乘法表的程序代码相关推荐

  1. Python数据结构14:递归的原理,递归实现数列求和、求阶乘、十进制转为任意进制

    1. 概念:什么是递归? 递归(Recursion)是一种解决问题的方法.尤其是复杂问题,有时用递归解决复杂问题可能会出奇的简单. 递归将一个比较复杂的问题分解成更小规模的问题,持续分解直到问题规模小 ...

  2. 语言栈十进制转十六进制_十进制数转二进制、八进制、十六进制等任意进制_C语言「抄作业」...

    C语言「抄作业」系列之十进制数转二进制.八进制.十六进制等任意进制 PS: 写这篇时发现了潜藏多年的Bug.在修复时,无意间发现,本大仙当年的Bug代码竟然「流传甚广」--(别以为改了下变量名,就能骗 ...

  3. C语言实现:任意进制转换

    用途: 用C语言程序来实现任意进制之间的转换(不止2到16之间,任意进制皆可) 思路: 以十进制数为媒介,先将需要转换的数转换成十进制数,再将其转换成目标进制数 将涉及高于十进制的转换的数挑出来,利用 ...

  4. 使用递归将十进制转换成任意进制(Number Conversion)

    关于递归 什么是递归? 说白了,就是函数自己调用自己,然后被调用的函数继续调用自己,这将无限循环下去,除非代码中有终止调用链的的内容. 解释一下递归的所经历的过程 递归需要有边界条件.递归前进段和递归 ...

  5. 将一个10进制数转化为任意进制数 猜拳小游戏

    1.如何将一个10进制数,转化为2~16进制之间的数.且当数字>=10时,输出相对应的字母A~F 2.制作一个猜拳的小游戏 一.10进制转化为任意进制 1.首先知道进制的转化规则------可参 ...

  6. 十进制转为任意进制,发糖果

    问答题 问答题1:下列指令运行的结果为? int a[5] = {1,3,5,7,9}; int *p = (int *)(&a+1); printf("%d,%d",*( ...

  7. C#底层库--万能进制转换器(自定义有序字符,支持任意进制)

    系列文章 C#底层库–RegexHelper正则表达式辅助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/109745286 C#底层 ...

  8. 任意进制之间的转换(C++实现)

    任意进制之间的转换(C++实现) 题目描述 输入格式: 第一行输入两个整数 n 和 m (2<=n,m<=16),n 代表的是第二行输入的数的进制,m 代表的是输出的数字的进制. 第二行输 ...

  9. c语言进制转换pdf下载,C语言实现任意进制转换.doc

    C语言实现任意进制转换.doc includestdio.h#includemath.h#includestring.hvoid dtox(double num,int jz)char xnum100 ...

最新文章

  1. 网络文件系统(NFS)简介
  2. 危险进程大集合咯!(吐血推荐)
  3. 启动SystemServer的进程:启动各种系统服务
  4. 常考数据结构与算法:单调栈结构
  5. 有关于JAVA与后端C应用UTF8字符的通信
  6. 【项目管理】老板与客户意见冲突怎么办?
  7. footer bar in SAP Fiori as a service
  8. JDBC8.0 URL配置
  9. 打印任意想要的菱形,例如3行的、9行的、13行的菱形
  10. 代码分析-DataGrid实现自增列、单选、多选
  11. Python之路【第六篇】:Python运算符
  12. 关于 System.getProperty
  13. 关于兰伯特投影得应用问题
  14. SpringBoot整合调用微信模板方法实现微信公众号消息通知推送,Java实现微信公众号给关注用户推送自定义消息通知(手把手从0到1)
  15. 新手小白,做二次剪辑的必备工具,帮你快人一步
  16. NLTK-006:分类文本(性别鉴定)
  17. 句子重写任务近年有哪些值得关注的工作?看这一篇就够了!
  18. C++提高进阶,你知道多少?
  19. java 对象和List 里面的对象判断属性是不是为空
  20. mac 默认输入法禁用,删除?

热门文章

  1. JS输出26个英文大小写字母
  2. win7不能在本地计算机启动防火墙,win7操作中心无法启用防火墙怎么解决
  3. 错误 bpbrm(PID=7552) 从客户端 - Script exited with status = 1 the requested operat
  4. python--webdriver驱动浏览器操作(基础知识)
  5. 天嵌i.mx6q--1
  6. 移远串口调试软件QCOM下载
  7. vue如何对接网易云信IM即时聊天
  8. LOJ 10155. 「一本通 5.2 例 3」数字转换
  9. 第二百四十一节,Bootstrap进度条媒体对象和 Well 组件
  10. 厦大2021级期末上机考试