之前发过一个易语言转任意进制的源码, 看了几天的C++的视频教程。 于是把源码翻译过来了。
由于英文比较差,所以代码的可读性差。。。 大牛勿喷!
[C++] 纯文本查看 复制代码 #include<iostream>
#include <string>
#include <cstdio>
using std::cin;
using std::cout;
using std::string;
void reverse(string &txt)//字符串反转函数。
{
int len=txt.length();
for (int i = 0; i<len/2; i++)
{
//前后交换
char temp = txt[i];
txt[i] = txt[len-i-1];
txt[len-i-1] = temp;
}
}
int main()
{
int decimal;
int N_price;
char tmpstr[10];
string StrRet;
mark:
StrRet="";
cout<<"请输入需要转换的十进制整数:";
cin>>decimal;
cout<<"请输入需要转换到的进制:";
cin>>N_price;
if(N_price>1&&N_price<17)
{
for (int i=0,fo=true;fo;i++)
{
int tmp;
int surpuls;
char Csurpuls;
tmp=decimal/N_price;
surpuls=decimal%N_price;
switch (surpuls)//对数值进行文本处理
{
case 10:StrRet=StrRet+'A';
break;
case 11:StrRet=StrRet+'B';
break;
case 12:StrRet=StrRet+'C';
break;
case 13:StrRet=StrRet+'D';
break;
case 14:StrRet=StrRet+'E';
break;
case 15:StrRet=StrRet+'F';
break;
default: sprintf( tmpstr, "%d", surpuls );
//cout<<surpuls;
StrRet=StrRet+tmpstr;
break;
}
if (tmp!=0)//判断是否除尽!
{
decimal=tmp;
}
else
fo=false;
}
}
reverse(StrRet);//字符串反转
cout<<"10进制转换到"<<N_price<<"进制后的值为:"<<StrRet<<std::endl;
goto mark;
}
|