学校1022: 进制转换问题

来源:互联网 发布:卓讯数据库打开 编辑:程序博客网 时间:2024/05/01 03:38

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 25int tran(int num[N],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[N],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;}


0 0
原创粉丝点击