C++用递归的方法把一个整数n转换成字符串可以是任意位的整数
#include<iostream>usingnamespacestd;chartran(intnum);intmain(){inta;charresult;cin>>a...
#include<iostream>using namespace std;char tran(int num);int main(){ int a; char result; cin>>a; result=tran(a);
return 0;}char tran(int num){ char reply; int i;
if((i=(num/10))>=10) { reply=tran(num/10); } reply=i+'0'; cout<<reply; return 0;}
始终不知道如何利用递归关系,求大神解惑!!! 展开
return 0;}char tran(int num){ char reply; int i;
if((i=(num/10))>=10) { reply=tran(num/10); } reply=i+'0'; cout<<reply; return 0;}
始终不知道如何利用递归关系,求大神解惑!!! 展开
展开全部
我试着写了一个出来,希望对你有帮助,我本身也才刚学C++没多久,不知道代码规不规范。必要的地方加了注释
#include<iostream>
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<<result<<endl;
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函数,调用它本身!
你这代码我看不明白是干什么!
你这代码我看不明白是干什么!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询