任意进制之间的转换问题 !!!非常nb的代码哦!!

来源:互联网 发布:php date函数 编辑:程序博客网 时间:2024/05/16 03:54
Problem C:进制转换
Descirption
自从 whojay 送了“女神”机械键盘后,虽然“女神”还是对他不理不睬不
约,可也算告诉了“女神”他是个程序猿,以后可以找 whojay 修电脑嘛,而且
还不过夜,想想都赚翻了。
whojay 这次终于抓住了这个机会跟“女神”接近了,在一边修电脑的同时
一边耐(zhuang)心(bi)的给女神讲解为什么计算机内部都是二进制数,女
神可不简单,当场给 whojay 出了道题十进制转十六进制的题,whojay 这下不会
了,想要求助计算机系的小伙伴帮他编写一个可以进行任意进制转换的程序,
好继续在“女神”面前秀优(zhi)越(shang)。
Input
每组测试数据一行。
每行三个数 N、S、T(1<=(N)S 进制<=10^9;2<=S;T<=35),其中 N 为 S 进制数。
当且仅当 N=S=T=0 时结束输入,字母一律为大写形式(1<=T<=1000)
Output
每组测试数据一行,输出转换为 T 进制的 S 进制数 N。
Sample Input
1024 10 2
ffff 16 10
123ABC 12 35
0 0 0
Sample Output
10000000000
65535
6WHR  
#include <stdio.h>#include <string.h>void print(int dec, int base2){if (dec==0)        return;print(dec/base2, base2);printf("%c", dec%base2>9?dec%base2-10+'A':dec%base2+'0');}int main(){    for(;;)    {char s[35];int base1, base2, i, dec=0;scanf("%s %d %d", s, &base1, &base2);for (i=0; i<strlen(s); i++)dec=dec*base1+(s[i]>='A'?s[i]-'A'+10:s[i]-'0');if (dec){        print(dec, base2);     printf("\n");}else            break;}}

1 0
原创粉丝点击