您的位置:首页 > 其它

学校1022: 进制转换问题

2014-03-09 08:36 197 查看
Description

  大家都知道,计算机中是以二进制存储的!但是在现实生活中,我们遇到过各种各样的进制情况,我们接触得最多的就是十进制,不过,生活中还存在各种进制计数的情况。例如:一个星期七天是7进制、一年十二个月,是12进制等等。小明最近在学c语言,熟悉了c语言中的各种进制转换问题,所以就尝试着各种进制转换的程序,现在他想写一个程序,把一个无符号数n,转化成在b进制下的表示。例如:n为10,b为2,则转化后为1010。又如:n为10,b为16,则转化后为0XA.

Input

  输入的第一行为一个正整数t ( t<=10000 ),表示一共有t组测试数据。每组两个整数,分别为n,b(0 <= n <= 1000000000,2<=b<=16)。n表示要转化的数,b表示b进制。

Output

  输出n在b进制下的表示。(注意:如b为16输入时记得加上0X,字母都是以大写的形式

Sample Input

4

10 2

10 16

100 7

1000000000 16

Sample Output

1010

0XA

202

0X3B9ACA00

#include <stdio.h>
#include <stdlib.h>
#define N 10000
#define K 25
int tran(int num
,int B,int n)
{
char ch[K]="0123456789ABCDEFGHIJK";
int i=0,j,temp;
do
{
num[i]=n%B;
i++;
}
while((n/=B)!=0);
/* for(j=0; j<i/2; j++)
{
temp=num[j];
num[j]=num[i-1-j];
num[i-1-j]=temp;
}*/
//或者直接输出
if(B==16)
printf("0X");
for(j=i-1;j>=0;j--)
printf("%c",ch[num[j]]);
printf("\n");
return i;
}
int main()
{
int B,num
,i,j,len,t;
long n;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&B);
len=tran(num,B,n);
//for(i=0; i<len; i++)
// printf("%d",num[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: