C++:用递归调用的方法将一个n位整数转化成字符串.(VC环境,全过程)

如题,谢谢

第1个回答  2012-04-21
#include<iostream>
#include<cstring>
using namespace std;
void int2str(unsigned long n,char* p)
{
if(n/10!=0)
{
*p++=n%10+'0';
int2str(n/10,p)
}
else //到了整数的第一位
{
*p=n%10+'0'; //第一位也要复制
}
}
int main()
{
unsigned long n=434562327;
char str[20]={0};
int2str(n,str);
int len=strlen(str);
for(int i=0;i<len/2;i++)
{
char c;
c=str[i];
str[i]=str[len-1-i];
str[len-1-i]=c;
}
cout<<str<<endl;
return 0;
}
第2个回答  2007-10-11
#include <iostream>
using namespace std;

char* Convert(int n,char *strResult)
{
char *p = strResult;

if(n/10 != 0)
{
p = Convert(n/10,p);
}
*p = n%10 + '0';

++p;

*p = '\0';

cout<<*p;

return p;
}

int main()
{
int n = 12301236;
char buff[20];
Convert(n,buff);

cout<<buff<<endl;

return 0;
}本回答被提问者采纳
第3个回答  2007-10-12
#include<iostream.h>
#include<string.h>

void recursion(int num,char * recur,int flag)
{
if(flag==1)
{
*recur=num+48;
return;
}

else
{
*recur=num/flag+48;//取得数字的最高位字符表示
num=num%flag;//去处数字最高位
recur++;
flag=flag/10;
recursion(num,recur,flag);
}

}

void main()
{
long num;
int n=1;//数字有几位
int flag=1;
char * recur;

//cout<<"please input n:";
//cin>>n;

cout<<"input num:";
cin>>num;

int tempnum=num;

while(tempnum>9)
{
tempnum=tempnum/10;
n++;
}

recur =new char[n+1];
memset(recur,0,n+1);

char *temp=recur;//保存recur地址
for(int i=1;i<=n-1;i++)
flag=flag*10;//flag为输入数字的10^(n-1)

recursion(num,recur,flag);

recur=temp;
cout<<"num="<<recur<<endl;

delete []recur;

}
第4个回答  2007-10-12
二楼厉害哦