首页 > 学院 > 开发设计 > 正文

杭电2031 进制转换

2019-11-06 07:59:30
字体:
来源:转载
供稿:网友
PRoblem Description输入一个十进制数N,将它转换成R进制数输出。Input输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。Output为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。Sample Input
7 223 12-4 3Sample Output
1111B-11
#include <iostream>using namespace std;int main(){	int n,r,i;	int flag;	char num[1000];	int arr[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};  //字符数组存储用到的16进制数	while(cin>>n>>r)	{		if(n<0)		{			n*=(-1);			//负数华为正数统一处理			flag=-1;		}		else			flag=1;		for(i=0; ;i++)		{			num[i]=arr[n%r];	//n/r取余即n进制下当前未处理数据中最低位值			if(n/r==0)				break;						n/=r;		}		if(flag==-1)		{			num[++i]='-';		//将负数‘-’补上,注意此处i为全局变量,因而能够承接上面循环后i的值		}		for(;i>=0;i--)		{			cout<<num[i];		}		cout<<endl;	}	return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表