进制转换
  • 板块学术版
  • 楼主fareless
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/11/4 00:06
  • 上次更新2023/11/4 01:28:45
查看原帖
进制转换
598387
fareless楼主2021/11/4 00:06

输入一个十进制数N,将它转换成R进制数输出。

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

输出数据为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

#include<stdio.h>
int main()
{
	int n,m;
	while(scanf("%d%d", &n, &m)==2)
	{
        if(n==0)printf("0\n");
        else if(m<=10&&m>=2)
		{int a,c,b[100],k=0;
        a=n;
	while(a!=0)
	{c=a%m;
	 b[k]=c;k++;
	a=a/m;}
	for(int i=k-1;i>=0;i--)
	{if(n>=0)printf("%d", b[i]);
	 else {if(i==k-1)printf("%d", b[k-1]);
	        else printf("%d", -b[i]);}}
	printf("\n");	}
	else if(m>10&&m<=17)
	{
		char o[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
		int c,a,k=0,b[100];
	       	a=n;
        while(a!=0)
        {c=a%m;
         b[k]=c;k++;
        a=a/m;}
	for(int l=k-1;l>=0;l--)
	{if(n>=0)printf("%c", o[b[l]]);}
	printf("\n");}}
	return 0;
}

这道题我对了83.3%,还有什么地方错了,大佬求救!!

2021/11/4 00:06
加载中...