您的位置:首页 > 编程语言 > C语言/C++

进制转化算法(C++实现)——创新工场笔试归来

2010-10-22 11:08 363 查看
10月17号晚上参加了创新工场的校园招聘笔试,题目很少,时间是一个小时。很多题目像是智力测验,想我这种反应慢的人实在是不适合参加创新工厂的考试。最后一道题是一道编程题。我之前没写过类似的程序,答得很差。回到宿舍后,我将这道题做了出来与大家分享。想加入创新工场的青年可以参考一下。

题目大致是这样的:编程实现将十进制的整数转化成任意进制的整数,用户输入一个十进制数R和想要转化的进制数X,程序输出转换后的X进制的整数。

例如:

R X 输出

3 2 11

12 8 14

31 16 1f

注意:1<X<17。

下面是我用C++实现的代码,程序在visual C++ 6.0 上运行过了。程序不足之处是没有用户的安全输入检查。

#include <iostream>

#include <vector>

using namespace std;

void numToChar(char &num)

{

/*num是0到9之间的数字*/

if(num<=9&&num>=0)

{

num+=48;

}

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';

}

}

}

/*进制转化函数——x表示进制,r表示十进制数*/

void decimalTransmit(int r,int x)

{

vector<char> result;

char temp;

while(r>0)

{

temp=r%x;

numToChar(temp);

result.push_back(temp);

r=r/x;

}

vector<char>::iterator vc_it=result.end()-1;

for(;vc_it>=result.begin();vc_it--)

{

cout<<*vc_it;

}

cout<<endl;

}

int main()

{

int R,X;

cout<<"请输入一个十进制数和要转化的进制:";

cin>>R>>X;

decimalTransmit(R,X);

return 0;

}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/piaojun_pj/archive/2010/10/18/5948358.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: