C++:设计函数求将整数转换为十六进制(字符数组的方式),要求用递归方式实现
2个回答
展开全部
转换方法是:不妨假设待转换的十进制数为n,每次对n模16,得到的余数即是低位的十六进制数,模完之后对n/=16,这样反复进行直到n=0为止。
以下提供参考,可转换任意正负整数,并附上测试用例及预期输出 :]
#include<iostream>
using namespace std;
const int MAXN=100;
char num[MAXN];
char digit[16]={ '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
int k;
void toHex( int n )
{
if( !n ) return;
num[k--]=digit[n%16];
toHex( n/16 );
}
int main( void )
{
bool neg;
int n;
while( cin>>n ){
if( !n ){
cout<<0<<"\n"<<endl;
continue;
}
memset( num,'0',sizeof(num) );
neg=n<0 ? true : false;
k=MAXN-1;
toHex( abs(n) );
if( neg ) cout<<"-";
int i=0;
while( num[i]=='0' )
i++;
for( ; i<MAXN ; i++ )
cout<<num[i];
cout<<"\n"<<endl;
}
return 0;
}
/*
265789654
FD7A0D6
16
10
13
D
12
C
11
B
10
A
7
7
0
0
16
10
18
12
7737
1E39
1378920
150A68
8889
22B9
*/
以下提供参考,可转换任意正负整数,并附上测试用例及预期输出 :]
#include<iostream>
using namespace std;
const int MAXN=100;
char num[MAXN];
char digit[16]={ '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
int k;
void toHex( int n )
{
if( !n ) return;
num[k--]=digit[n%16];
toHex( n/16 );
}
int main( void )
{
bool neg;
int n;
while( cin>>n ){
if( !n ){
cout<<0<<"\n"<<endl;
continue;
}
memset( num,'0',sizeof(num) );
neg=n<0 ? true : false;
k=MAXN-1;
toHex( abs(n) );
if( neg ) cout<<"-";
int i=0;
while( num[i]=='0' )
i++;
for( ; i<MAXN ; i++ )
cout<<num[i];
cout<<"\n"<<endl;
}
return 0;
}
/*
265789654
FD7A0D6
16
10
13
D
12
C
11
B
10
A
7
7
0
0
16
10
18
12
7737
1E39
1378920
150A68
8889
22B9
*/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询