进制转化算法(C++实现)——创新工场笔试归来
2010-10-18 11:42
399 查看
10月17号晚上参加了创新工场的校园招聘笔试,题目很少,时间是一个小时。很多题目像是智力测验,想我这种反应慢的人实在是不适合参加创新工厂的考试。最后一道题是一道编程题。我之前没写过类似的程序,答得很差。回到宿舍后,我将这道题做了出来与大家分享。想加入创新工场的青年可以参考一下。
题目大致是这样的:编程实现将十进制的整数转化成任意进制的整数,用户输入一个十进制数R和想要转化的进制数X,程序输出转换后的X进制的整数。
算法思想:将十进制数R与进制X取模,即R%X的值作为X进制整数的倒数第一位,然后使R等于R/X,再取R%X的值作为X进制整数的倒数第二位......依次类推,直到最后R/X=0为止。
例如:
R X 输出
3 2 11
12 8 14
31 16 1f
注意:1<X<17。
下面是我用C++实现的代码,程序在visual C++ 6.0 上运行过了。程序不足之处是没有用户的安全输入检查。
#include <iostream>
#include <string>
using namespace std;
/*将一个整型数字转化成字符型数字,例如 8->'8',12->'c'*/
void numToChar(char &num)
{
/*num是0到9之间的数字*/
if(num<=9&&num>=0)
{
num+=48;
}
/*num是10到15之间的数字*/
else
{
switch(num)
{
case 10:num='A';
case 11:num='B';
case 12:num='C';
case 13:num='D';
case 14:num='E';
case 15:num='F';
}
}
}
/*进制转化函数——r表示需要被转化的十进制数,x表示进制(1<x<17)*/
void decimalTransmit(int r,int x)
{
string result;//保存x进制数
char temp;
while(r>0)
{
temp=r%x;
numToChar(temp);
result+=temp;
r=r/x;
}
/*输出转化后的x进制整数*/
for(int i=result.size()-1;i>=0;i--)
cout<<result[i];
cout<<endl;
}
int main()
{
int R,X;
cout<<"请输入一个十进制数和要转化的进制(用空格作为间隔符):";
cin>>R>>X;
decimalTransmit(R,X);
return 0;
}
题目大致是这样的:编程实现将十进制的整数转化成任意进制的整数,用户输入一个十进制数R和想要转化的进制数X,程序输出转换后的X进制的整数。
算法思想:将十进制数R与进制X取模,即R%X的值作为X进制整数的倒数第一位,然后使R等于R/X,再取R%X的值作为X进制整数的倒数第二位......依次类推,直到最后R/X=0为止。
例如:
R X 输出
3 2 11
12 8 14
31 16 1f
注意:1<X<17。
下面是我用C++实现的代码,程序在visual C++ 6.0 上运行过了。程序不足之处是没有用户的安全输入检查。
#include <iostream>
#include <string>
using namespace std;
/*将一个整型数字转化成字符型数字,例如 8->'8',12->'c'*/
void numToChar(char &num)
{
/*num是0到9之间的数字*/
if(num<=9&&num>=0)
{
num+=48;
}
/*num是10到15之间的数字*/
else
{
switch(num)
{
case 10:num='A';
case 11:num='B';
case 12:num='C';
case 13:num='D';
case 14:num='E';
case 15:num='F';
}
}
}
/*进制转化函数——r表示需要被转化的十进制数,x表示进制(1<x<17)*/
void decimalTransmit(int r,int x)
{
string result;//保存x进制数
char temp;
while(r>0)
{
temp=r%x;
numToChar(temp);
result+=temp;
r=r/x;
}
/*输出转化后的x进制整数*/
for(int i=result.size()-1;i>=0;i--)
cout<<result[i];
cout<<endl;
}
int main()
{
int R,X;
cout<<"请输入一个十进制数和要转化的进制(用空格作为间隔符):";
cin>>R>>X;
decimalTransmit(R,X);
return 0;
}
相关文章推荐
- 进制转化算法(C++实现)——创新工场笔试归来
- 同余幂的原理和C++实现,附赠一个10进制数转换为任意进制的数组的算法。
- hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)
- 算法与数据结构基础11:C++实现——二拆搜索树节点删除
- C++基本算法收集及代码实现
- c++实现将简单的中缀表达式转化为…
- 雅可比(Jacobi)迭代算法的C++实现
- C++简单实现的全排列算法示例
- 算法设计之快速排序的实现 (C++实现)
- 算法系列—红黑树(C++实现)
- 快速傅里叶变换(FFT)算法C++实现代码
- 利用递归实现10进制转化成任意进制
- c++实现加密和解密算法以及JNI技术的应用实例
- C/C++计算一重定积分和二重定积分(纯暴力算法实现)
- 【高级算法】禁忌搜索算法解决3SAT问题(C++实现)
- 编译原理(七) 算符优先分析法(构造算符优先关系表算法及C++实现)
- 连连看消除算法的C++代码实现
- [置顶] 创新工场2014笔试算法题汇总
- LZW 压缩算法的C++实现
- c++将一个字符串转化为指定进制的数