进制转换

problem description:输入一个十进制数N,将它转换成R进制数输出。
思路:问题的实质为十进制转换为其他进制。首先想到的就是短除法,对相关信息搜索之后并未找到有关进制转换的内容,进一步搜索后发现这种方法可能不叫短除法。
最终找到解决此题的核心思想:十进制转任意进制的通用方法是:除x取余倒排法(x代表进制数)。
代码如下:

#include <stdio.h>

int main(){
	int n,r,cnt,i;
	while(~scanf("%d %d", &n,&r)){
		int a[50];
		cnt=0;
		if(n<0){
			printf("-");
			n=-n;	
		}
		while(n>=r){//if i don't know the number of cycles,i can use "while"cycle
			a[cnt++]=n%r; 
			n=n/r;
		}
		a[cnt++]=n;
		for(i=cnt-1;i>=0;i--){//mistake
			if(a[i]>=10)
				printf("%c", a[i]-10+'A');
			else
				printf("%d", a[i]);
		}
		printf("\n");	
	}	
} 

在mistake处我犯了一个错误,我希望从最大下标处开始打印,结果忘记下标-1,同样的错误不能再犯第二次!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值