题目输入样例误导,输入个数5是不必要的.

模版:P进制->Q进制:
(1)将P进制数x->十进制数y

/*将P进制数x转为十进制数y*/
int y=0,product=1,x,P;
    while(x!=0){
        y = y + (x%10)*product;
        x = x/10;
        product = product*P;
    }

(2)将十进制数y->Q进制数z

/*将十进制数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]);
    }

本题代码:将十进制数转为二进制数

#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;
}