C++ 第41课转进制(2)

#include <iostream>
#include <string>
using namespace std;
void er(){
	cout<<"请输入一个二进制的数:";
}
void ba(){
	cout<<"请输入一个八进制的数:";   
}
void shi(){
	cout<<"请输入一个十进制的数:"; 
}
void shiliu(){
	cout<<"请输入一个十六进制的数:"; 
}
void erzhuanshi(){
    string a;
    int p = 1;
    int s = 0;
    er();
    cin>>a;
    for(int i = a.length()-1;i>=0;i--){
        int x = a[i]-'0';
        s += x*p;
        p *= 2;
    }
    cout<<s<<endl;
}
void shizhuaner(){
    int a[10],n,i;
    shi();   
    cin>>n;  
    for(i=0;n>0;i++){  
        a[i] = n%2;  
        n = n/2;
    }   
    for(i=i-1;i>=0;i--){  
        cout<<a[i];  
    }
}
void bazhuaner(){
    int a[10],n,i;
    ba();   
    cin>>n;  
    for(i=0;n>0;i++){  
        a[i] = n%2;  
        n = n/2;
    }   
    for(i=i-1;i>=0;i--){  
        cout<<a[i];  
    }
}
void erzhuanba(){
    string a;
    int p = 1;
    int s = 0;
    er();
    cin>>a;
    for(int i = a.length()-1;i>=0;i--){
        int x = a[i]-'0';
        s += x*p;
        p *= 2;
    }
    cout<<s<<endl;
}
void shiliuzhuaner(){
    int a[10],n,i;
    shiliu();   
    cin>>n;  
    for(i=0;n>0;i++){  
        a[i] = n%2;  
        n = n/2;
    }   
    for(i=i-1;i>=0;i--){  
        cout<<a[i];  
    }
}
void erzhuanshiliu(){
    string a;
    int p = 1;
    int s = 0;
    er();
    cin>>a;
    for(int i = a.length()-1;i>=0;i--){
        int x = a[i]-'0';
        s += x*p;
        p *= 2;
    }
    cout<<s<<endl;
}
int main() {
    cout<<"请问您要转换成什么:"<<endl
	    <<"十转二请输入102"<<endl
		<<"二转十请输入210"<<endl
		<<"十转八请输入108"<<endl
		<<"八转十请输入810"<<endl
		<<"二转八请输入28"<<endl
		<<"八转二请输入82"<<endl;
    int a,b;
    cin>>a;
    if(a==102){
        shizhuaner();
    }else if(a==210){
        erzhuanshi();
    }else if(a==28){
		erzhuanba();
	}else if(a==82){
		bazhuaner();
	}else if(a==108){
		shi();   
		scanf("%d",&b);
		printf("%o",b);
	}else if(a==810){
		ba();  
		scanf("%o",&b);
		printf("%d",b);
	}else if(a==1610){
		shiliu();  
		scanf("%x",&b);
		printf("%d",b);
	}else if(a==168){
		shiliu();  
		scanf("%x",&b);
		printf("%o",b);
	}else if(a==162){
		shiliu();  
		shiliuzhuaner(); 
	}else if(a==1016){
		shi();   
		scanf("%d",&b);
		printf("%x",b);
	}else if(a==816){
		ba(); 
		scanf("%o",&b);
		printf("%x",b);
	}else if(a==216){
		erzhuanshiliu();
	}
    return 0;
}

  

posted @ 2022-09-12 22:32  王一行  阅读(25)  评论(0)    收藏  举报