当前位置:C++技术网 > 资讯 > 进制转换源代码分享

进制转换源代码分享

更新时间:2015-06-26 13:06:09浏览次数:1+次

#include<iostream.h> 
#include<string.h> 
char str[30]; 
char s[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
void Revolt2Sixteen(int n); 
void SixteenRel(); 
int Sixteen2Ten(); 
int TenRel(int s); 
void main() 
{ 
    int n; 
    cout<<"请输入个10000以内的整数:"; 
    cin>>n; 
    if(n>=0 && n<=10000) 
        cout<<"\t"<<n; 
    else 
        cout<<"请重新输入:"; 
    for(int i=0;i<5;i++)               
    { 
                      
        Revolt2Sixteen (n); 
        SixteenRel (); 
        n= Sixteen2Ten (); 
        if(i!=4) 
            n= TenRel (n); 
    } 
} 
void Revolt2Sixteen (int n) 
{ 
    int j,i=0,q; 
    while(n) 
    { 
        j=n%16; 
        str[i]=s[j]; 
        n/=16; 
        i++; 
    } 
    cout<<"\t"; 
    for(q=i-1;q>=0;q--) 
        cout<<str[q]; 
} 
void SixteenRel () 
{   
    int i,j; 
    char str1; 
    int l=strlen(str); 
    for(i=0,j=l-1;i<j;i++,j--) 
    { 
        str1=str[i]; 
        str[i]=str[j]; 
        str[j]=str1; 
    } 
    cout<<"\t"; 
    for(j=l-1;j>=0;j--) 
        cout<<str[j]; 
           
} 
int Sixteen2Ten () 
{ 
    int s=0; 
    int l=strlen(str); 
    for(int i=l-1;i>-1;i--) 
    { 
        s=s*16+str[i]-'0'; 
        if(str[i]>'9') 
            s-=7; 
    } 
    cout<<'\t'; 
    cout<<s<<endl; 
    return s; 
} 
int TenRel (int s) 
{ 
    int result=0,p; 
    while(s%10>=0) 
    { 
        int c=s%10; 
        s/=10; 
        p=10*p+c; 
        if(s == 0) 
            break; 
    } 
    cout<<'\t'<<p; 
    return result; 
}