我试着写了一个出来,希望对你有帮助,我本身也才刚学C++没多久,不知道代码规不规范。必要的地方加了注释
#include
using namespace std;
// 获取数字的位数
int getNumLength(int num)
{
if(num>=10)
{
num/=10;
return 1+getNumLength(num);
}
return 1;
}
const char numChar[]="0123456789";
void tran(int num,char*ch)
{
int length=getNumLength(num);
//用num除以10的length-1次方,获得最高位的数字
//比如123的第一次递归,n=123/10^2=1,第二递归n=23/10^1=2
int n=(int)(num/pow(10,length-1));
if(length>1) // 如果位数大于1,则继续递归
{
*ch=numChar[n];
//将数据源减去10的length-1次方后再进入下次递归
num-=(int)(n*pow(10,length-1));
ch++;//指针自加可以使ch指针指向字符数组的下一个元素
tran(num,ch);
}else
{//如果位数小于或等于1则停止递归,并在末尾加上'\0'
*ch=numChar[n];
ch++;
*ch='\0';
}
}
int main()
{
int a;
cin>>a;
int length=getNumLength(a);
// 预先开辟length+1个字节空间,比如123要开辟4个字节,最后一个字节是'\0';
char *result=new char[length+1];
tran(a,result);
cout<system("pause");
return 0;
}
以下是用递归,正向输出每个数字的方法
void tran(int num);
int main()
{
int a;
cin>>a;
tran(a);
return 0;
}
void tran(int num)
{
if ( num > 10 )
tran( num/10 );
cout << num%10;
}
如果你想把结果存储到字符串数组中,则上面的代码要改造一下才可以,增加一个字符数组,tran()函数也要增加相应的参数才可以达到效果
就是A函数调用A函数,调用它本身!
你这代码我看不明白是干什么!