题目输入样例误导,输入个数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; }