大家都知道,计算机中是以二进制存储的!但是在现实生活中,我们遇到过各种各样的进制情况,我们接触得最多的就是十进制,不过,生活中还存在各种进制计数的情况。例如:一个星期七天是7进制、一年十二个月,是12进制等等。小明最近在学c语言,熟悉了c语言中的各种进制转换问题,所以就尝试着各种进制转换的程序,现在他想写一个程序,把一个无符号数n,转化成在b进制下的表示。例如:n为10,b为2,则转化后为1010。又如:n为10,b为16,则转化后为0XA.
输入的第一行为一个正整数t ( t<=10000 ),表示一共有t组测试数据。每组两个整数,分别为n,b(0 <= n <= 1000000000,2<=b<=16)。n表示要转化的数,b表示b进制。
输出n在b进制下的表示。(注意:如b为16输入时记得加上0X,字母都是以大写的形式
4 10 2 10 16 100 7 1000000000 16
1010 0XA 202 0X3B9ACA00
#include <iostream> using namespace std; int main() { int b,num[1000],k; char s[21]={'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F','G','H','I','J','K'}; int j,i=0; long n; cin>>k; while(k--) { cin>>n>>b; do { num[i]=n%b; i++; } while((n/=b)!=0); if(b==16) cout<<"0X"; for(j=i-1;j>=0;j--) cout<<s[num[j]]; cout<<endl; } return 0; }
这方面的操作要好好加强一下!
推荐 http://blog.csdn.net/smartboysboys 这同学贴上的题目。。不能更赞!