#include "stdafx.h"
#include <iostream>
#define SIZEMAX 50
using namespace std;
void myprintf(int n);
void Myitoa1(int num,int radix);
void myprintf1(int n,char str[],int i);
char* Myitoa2(int num,char str[],int radix);
int _tmain(int argc, _TCHAR* argv[])
{
int n;
char str[SIZEMAX];
char *p=NULL;
int radix;
printf("intput a num n(n>0):\n");
cin>>n;
printf("intput a conversion num(n=2,8,16,32):\n");
cin>>radix;
cout<<"这个只能最大转换为16进制:\n";
Myitoa1(n,radix);
cout<<"\n";
cout<<"这个可以任意转换进制:\n";
p=Myitoa2(n,str,radix);
printf("%s\n",p);
return 0;
}
//将转换后的进制数存入字符数组输出
char *reverse1(char s[])
{
int i;
char tmp;
int len=strlen(s);
int xlen=len/2;
for(i=len-1;i>=xlen;i--)
{
tmp=s[i];
s[i]=s[len-i-1];
s[len-i-1]=tmp;
}
return s;
}
void myprintf1(int num,char str[],int i)
{
if(num<10)
{
str[i] = num + '0';
}
else
{
str[i] = (num-10) + 'A';
}
}
char* Myitoa2(int num,char str[],int radix)
{
int i=0;
char *s=str;
do
{
myprintf1(num%radix,str,i++);
}while((num/=radix) > 0);
str[i]='\0';
reverse1(str);
return s;
}
//递归输出转换后的进制
void myprintf(int n)
{
switch(n)
{
case 10: cout<<"A";
break;
case 11: cout<<"B";
break;
case 12: cout<<"C";
break;
case 13: cout<<"D";
break;
case 14: cout<<"E";
break;
case 15: cout<<"F";
break;
default: cout<<n;
break;
}
}
void Myitoa1(int num,int radix)
{
if(num<radix)
{
myprintf(num);
}
if(num>=radix)
{
Myitoa1(num/radix,radix);
myprintf(num%radix);
}
}
#include <iostream>
#define SIZEMAX 50
using namespace std;
void myprintf(int n);
void Myitoa1(int num,int radix);
void myprintf1(int n,char str[],int i);
char* Myitoa2(int num,char str[],int radix);
int _tmain(int argc, _TCHAR* argv[])
{
int n;
char str[SIZEMAX];
char *p=NULL;
int radix;
printf("intput a num n(n>0):\n");
cin>>n;
printf("intput a conversion num(n=2,8,16,32):\n");
cin>>radix;
cout<<"这个只能最大转换为16进制:\n";
Myitoa1(n,radix);
cout<<"\n";
cout<<"这个可以任意转换进制:\n";
p=Myitoa2(n,str,radix);
printf("%s\n",p);
return 0;
}
//将转换后的进制数存入字符数组输出
char *reverse1(char s[])
{
int i;
char tmp;
int len=strlen(s);
int xlen=len/2;
for(i=len-1;i>=xlen;i--)
{
tmp=s[i];
s[i]=s[len-i-1];
s[len-i-1]=tmp;
}
return s;
}
void myprintf1(int num,char str[],int i)
{
if(num<10)
{
str[i] = num + '0';
}
else
{
str[i] = (num-10) + 'A';
}
}
char* Myitoa2(int num,char str[],int radix)
{
int i=0;
char *s=str;
do
{
myprintf1(num%radix,str,i++);
}while((num/=radix) > 0);
str[i]='\0';
reverse1(str);
return s;
}
//递归输出转换后的进制
void myprintf(int n)
{
switch(n)
{
case 10: cout<<"A";
break;
case 11: cout<<"B";
break;
case 12: cout<<"C";
break;
case 13: cout<<"D";
break;
case 14: cout<<"E";
break;
case 15: cout<<"F";
break;
default: cout<<n;
break;
}
}
void Myitoa1(int num,int radix)
{
if(num<radix)
{
myprintf(num);
}
if(num>=radix)
{
Myitoa1(num/radix,radix);
myprintf(num%radix);
}
}