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

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;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值