/*将P进制数x转为十进制数y*/
int y=0,product=1,x,P;
while(x!=0){
y = y + (x%10)*product;
x = x/10;
product = product*P;
}
/*将十进制数y转为Q进制数z*/
int z[40],num=0,y,Q;
do{
z[num++]=y%Q;//num自增,跳出循环时已经自增1
y = y/Q;
}while(y != 0);//使用do-while语句是因为考虑到y=0的情况,不能直接跳出
for(int i = num-1;i>=0;i--){//因为num之前已经自增1,所以从z[num-1]输出到z[0]
printf("%d",z[i]);
}
eg:十进制转二进制
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
void Convert(int n){ //十进制转换成二进制
vector<int> answer; //可变数组
do{
answer.push_back(n % 2);
n /= 2;
}while(n!=0);
for(int i = answer.size() - 1; i >= 0; i--){
printf("%d",answer[i]);
}
printf("\n");
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
Convert(n);
}
return 0;
}