Lithium做进制转换

来源:互联网 发布:淘宝如何找到卖家电话 编辑:程序博客网 时间:2024/06/16 20:14
  • Description

最近Lithium时常感到头疼,因为考试的日子就快要到了。为了准备考试,Lithium正在没日没夜地看书,但凡是和计算机科学有关的书籍都有一个特点——书里总是会用二、十和十六三种进制中的某一种来表示一个数,有时甚至还需要读者将一个数在这三种进制中进行转换。

满眼纷乱的二、十、十六进制数令Lithium的头痛又加剧了。为了更有效率的进行复习,也为了让自己的头更好受一些。Lithium需要编一个程序来替他解决进制转换的问题。

  • Input

输入的第一行是一个正整数N。之后2~N+1行每行有一个非负整数num(0<=num<=1000),num后紧跟一个进制标识符,二进制为‘B’,十进制为‘D’,十六进制为‘H’,其中十进制数的标识符可以缺省表示。

  • Output

对于每个输入的数,先输出一行“Case #:”,其中‘#’为这一组输出的序号,在之后的三行里分别输出num的二、十、十六进制表示形式并加上进制标识符。每组答案之后额外输出一个空行。

  • Sample Input

4
1B
1D
1
1H

  • Sample Output

Case 1:
1B
1D
1H

Case 2:
1B
1D
1H

Case 3:
1B
1D
1H

Case 4:
1B
1D
1H

#include<iostream>#include<string>using namespace std;int main(){    //freopen("in.txt","r",stdin);    int n,k,i,len,j,sum,tmp,t,x;    char s[12];int s1[12];    scanf("%d",&n);    getchar();    for(k=1;k<=n;k++)    {        sum=0;        printf("Case %d:\n",k);        gets(s);        len=strlen(s);        if(s[len-1]=='B')            for(i=0;i<len-1;i++)                sum=sum*2+s[i]-'0';        if(s[len-1]=='D')            for(i=0;i<len-1;i++)                sum=sum*10+s[i]-'0';        if(s[len-1]>='0'&&s[len-1]<='9')            for(i=0;i<len;i++)                sum=sum*10+s[i]-'0';        if(s[len-1]=='H')            for(i=0;i<len-1;i++)                if(s[i]>='0'&&s[i]<='9')                sum=sum*16+s[i]-'0';                else                sum=sum*16+s[i]-55;        t=sum;x=0;        if(t==0)s1[x++]=0;        while(t)        {            s1[x++]=t%2;            t/=2;        }        for(j=x-1;j>=0;j--)            printf("%d",s1[j]);        printf("B\n");        t=sum;x=0;        if(t==0)s1[x++]=0;        while(t)        {            s1[x++]=t%10;            t/=10;        }        for(j=x-1;j>=0;j--)            printf("%d",s1[j]);        printf("D\n");        t=sum;x=0;        if(t==0)s1[x++]=0;        while(t)        {            s1[x++]=t%16;            t/=16;        }        for(j=x-1;j>=0;j--)            if(s1[j]<10)                printf("%d",s1[j]);            else                printf("%c",s1[j]+55);        printf("H\n\n");    }    return 0;}
0 0
原创粉丝点击