【腾讯校招在线考试附加题】将一个10进制数转换为四位定长的36进制数
来源:互联网 发布:无限网络 封优酷 编辑:程序博客网 时间:2024/06/05 05:45
要求:
思路:首先很容易知道当n的值<=35时,则该四位36进制的最终结果前3位全为0,只最后一位为该数字在36位二进制中表示的字母,我们可以用一个函数char digitalToChar(int n)来将一个数字转换为其在36进制中对应的字符,当n值>35时,我们我们举几个简单的例子来分析一下:如n=36,则最终结果为0010,我们知道将一个10进制数转换为k进制数采用的是除k取余,即将该数n对k取余所得结果放在最低位,然后将n不断除以k然后取余放在次低位直至商为0为止。如:36%36=0,所以最终结果最低位为0,然后将(36/36)%36=1,所以次低位为1,然后将(1/36)%36=0所以循环终止,即最终结果为10(用四位表示则为0010),与
最终结果相符,所以解决此题的关键是弄清楚10进制值转换为k进制用处k取余。
基于上述思路代码如下:
#include<iostream>using namespace std;char digitalToChar(int n){if(n>=10)return 'A'+(n-10);elsereturn n +'0';//注意因为是将数字转换为字符,所以即使当n<10时仍应以字符的形式表示,所以此处不可以直接返回n}void digitalTo36(int n){if(n<0){cout<<"参数错误"<<endl;return;}char result[5],ch;//因为最终结果以四位二进制表示,所以定义一个长度为5的字符数组用来存储最终结果result[4]='\0';memset(result,'0',4);//注意初始化的时候用字符'0'初始化而不是数字0初始化,如果用数字0初始化则表示字符'\0'int index=3;int digital;if(n<=35){result[index]=digitalToChar(n);}else{while(n%35){digital=n%36;ch=digitalToChar(digital);result[index--]=ch;n/=36;}}cout<<result<<endl;}int main(){int n;cin>>n;digitalTo36(n);return 1;}
1 0
- 【腾讯校招在线考试附加题】将一个10进制数转换为四位定长的36进制数
- 把一个正整数转化为用一个4位定长的36进制字符串
- [2017腾讯校招在线笔试题]
- 将一个数字转换为有千分位的格式
- 错误总结(1): 使用SHA()将password加密为一个定长为40的字符串
- 强化练习9:将不定长的字符串转化为一个16位的字符数组
- (四)java实现文档的在线浏览-使用swftools将pdf转换为swf
- 2017腾讯校招在线编程----编码
- 将数字字符串两位一组转换为16进制数
- 用C语言实现将一个int类型的数的每一个字节转换为8位2进制数的表示!!
- 请设计一个函数可以把10进制的正整数转换为4位定长的36进制字符串,36进制规则0-9,A-Z,例如:1=‘000‘,10=’000A‘,100='002S',2000='01JK’
- 将一个多位整数转换为数组
- 2014 阿里校招研发岗位在线笔试题+附加题
- 阿里巴巴集团2015年秋季校招在线笔试附加题分析
- 阿里巴巴2016校招在线笔试附加题(C++研发)
- 2015阿里在线考试附加题1 新解
- 将网页在线转换为PDF的网站
- 在线将ppt转换为pdf的方法
- 八.ACE模板的布局简介
- HDU3374
- jdbc连接各种数据库的方法
- uva1583 Digit Generator && uva1584 Circular Sequence(水)
- 希尔排序算法
- 【腾讯校招在线考试附加题】将一个10进制数转换为四位定长的36进制数
- SSH Secure File Transfer上传文件错误:encountered 1 errors during the transfer解决办法
- 实验二 分支程序实验和循环程序实验
- android 在eclipse中使用RecyclerView
- java path classpath JAVA_HOME
- 2016/3/14 开始自己的编程之路
- java实现走迷宫
- 统计难题
- LeetCode题解-6. ZigZag Conversion