#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int fun(int n,int k,vector<char>a,int x);
void f(int x,int m);
void main()
{
int n,k,m,i;
int x=0;
cout<<"**********歡迎進入數制轉換器**********"<<endl;
cout<<"請輸入這個數的進制:";
cin>>k;
cout<<"請輸入要轉化為的進制:";
cin>>m;
cout<<"請輸入這個數的位數:";
cin>>n;
vector<char>a(n);
cout<<"請輸入這個數:";
for(i=0;i<n;i++)
{
cin>>a[i];
}
cout<<"跟"<<k<<"進制數對應的"<<m<<"進制數是:";
x=fun(n,k,a,x);
f(x,m);
}
int fun(int n,int k,vector<char>a,int x)
{
int i;
for(i=0;i<n;i++)
{
switch(a[i])
{
case '0':
a[i]=0;
continue;
case '1':
a[i]=1;
continue;
case '2':
a[i]=2;
continue;
case '3':
a[i]=3;
continue;
case '4':
a[i]=4;
continue;
case '5':
a[i]=5;
continue;
case '6':
a[i]=6;
continue;
case '7':
a[i]=7;
continue;
case '8':
a[i]=8;
continue;
case '9':
a[i]=9;
continue;
case 'A':
a[i]=10;
continue;
case 'B':
a[i]=11;
continue;
case 'C':
a[i]=12;
continue;
case 'D':
a[i]=13;
case 'E':
a[i]=14;
continue;
case 'F':
a[i]=15;
continue;
default:
continue;
}
}
for(i=0;i<n;i++)
{
x+=(int)(a[i])*(pow(k,(n-i-1)));
}
return x;
}
void f(int x,int m)
{
int i=0,j,b[20];
for(;x!=0;i++)
{
b[i]=x%m;
x=x/m;
}
for(j=i-1;j>=0;j--)
{
switch(b[j])
{
case 10:
cout<<"A";
continue;
case 11:
cout<<"B";
continue;
case 12:
cout<<"C";
continue;
case 13:
cout<<"D";
continue;
case 14:
cout<<"E";
continue;
case 15:
cout<<"F";
continue;
default:
b[j]=(char)(b[j]);
cout<<b[j];
continue;
}
}
cout<<endl;
}
我這串代碼只能實作一次數制轉換,有沒有哪位大佬教教我如何實作多次數制轉換?
uj5u.com熱心網友回復:
付訓復的一個十進制轉十六進制的例子可參uj5u.com熱心網友回復:
沒對上問題吧,我是想知道如何繼續下去進行數值轉換,我上面的代碼只能進行一次,求教。uj5u.com熱心網友回復:
看例子就該領悟要學著包裝成函式就可反復呼叫。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/32536.html
標籤:C++ 語言
上一篇:VS2015,class學習
