C++ 用递归法将一个整数N转换成字符串,例如输入483,应输出字符串"483".N的位数不确定,可以是任意位数的

答案给的是#include<iostream>usingnamespacestd;intmain(){voidconvert(intn);intnumber;cout<<... 答案给的是
#include <iostream>
using namespace std;
int main()
{void convert(int n);
int number;
cout<<"input an integer:";
cin>>number;
cout<<"output:"<<endl;
if (number<0)
{cout<<"-";
number=-number;
}
convert(number);
cout<<endl;
return 0;
}

void convert(int n)
{int i;
char c;
if ((i=n/10)!=0)
convert(i);
c=n%10+'0';
cout<<" "<<c;
}

可是我输入483 出来的却只有4 是哪里不对?望高手指点 追加分
展开
 我来答
刑画0HWa20
2012-12-22 · TA获得超过3825个赞
知道大有可为答主
回答量:1.2万
采纳率:0%
帮助的人:3101万
展开全部
写符合您的要求,请参阅基本

但有些可以改变下面的代码:

#包括
诠释GNN(INT E){

诠释J;
诠释= 1;
为(J = 0; <E,J + +)
{
最后= 10 *最后;
}
返回上;
}
无效的乐趣(长整型N,N)
{
诠释下; BR />(N <1)
{
printf的(“\”“);

}

其他
{
下= N / GNN(N-1);
printf的(“%d”,下);
的乐趣(N%GNN(N-1),N-1);
}
}
无效的主要()
{
长整数N;
printf(“请输入要转换的数字:”); <BR / scanf函数(“%d”,&N);
N = 1;
为long int k = N/10;
(INT I = 0,K = 0;我+ +)

{
K = k/10;
N + +;
}
printf的(“转换输出:”); /> printf(“请\”“);
乐趣(N,N);
printf的(”\ n“);
/ /的getch();
}
梦见钞
推荐于2017-11-25 · TA获得超过708个赞
知道大有可为答主
回答量:1584
采纳率:50%
帮助的人:1606万
展开全部
VS2008这样没问题,你用的什么编译器
#include <iostream>
using namespace std;
void convert(int n)
{
int i;
char c;
if ((i=n/10)!=0)
convert(i);
c=n%10+'0';
cout<<" "<<c;
}
int main()
{
int number;
cout<<"input an integer:";
cin>>number;
cout<<"output:"<<endl;
if (number<0)
{
cout<<"-";
number=-number;
}
convert(number);
cout<<endl;
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2012-12-08 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3413万
展开全部
/*
input an integer : -256
output : -256
*/
#include <iostream>
using namespace std;
int main() {
void convert(int n);
int number;
cout<<"input an integer : ";
cin>>number;
cout<<"output : ";
if(number < 0) {
cout<<"-";
number = -number;
}
convert(number);
cout<<endl;
fflush(stdin);
getchar();
return 0;
}

void convert(int n) {
int i;
char c;
if(n > 0) convert(n/10);
if(n > 0) {
c = n%10 + '0';
cout << c;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
守惜映596
2013-01-07
知道答主
回答量:2
采纳率:0%
帮助的人:3043
展开全部
为什么调用函数时要用到convert() 函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
usernamevalid
2012-12-09 · TA获得超过4417个赞
知道小有建树答主
回答量:2001
采纳率:71%
帮助的人:748万
展开全部
char* function(int a) ; 是转换函数 当得到整形参数a 会返回一个指向目标字符串的char指针,,
该递归函数的原理是:
1)递归中间步骤:若当前整数参数a 不为个位。。则将a/10代入char* function(int a) ; 并等待调用的函数被跳出后 将当前整数参数a的最低位存入字符串。
2)递归最底层情况:最若该整数为个位 则直接转换为ascii码;并存入字符窜。。递归结束

#include
char mychar[100];//定义一个无限大的字符数组来存放所生成的字符
int i=0; //计数器初始化

char* function(int a)//定义递归函数
{
if (a<10) // base case,最底情况
{
mychar[i++]=char(48+a); //转化为字符串使用ASCⅡ码来转换
return mychar; //函数返回,程序运行到到调用它的语句的下句
}
function(a/10); //递归方式, 将整数的最后一位消去后代入递归函数
mychar[i++]=char(48+a%10); //转化为字符串使用ASCⅡ码来转换
return mychar; //函数返回,程序运行到到调用它的语句的下句
}

void main()
{

char*a;
int num=0;

scanf("%d",&num);
a=function(num);

printf("转化为字符串后:%s",a);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式