用C++编写一个递归函数将一个整数n转换成相应的字符串

#include<iostream>
using namespace std;
int main()
{int a;
cin>>a;
int zhishu(int);
char f(int);
f(a);
cout<<'\n';
return 0;
}
int zhishu(int n)
{if(n)
{n-=1;
return 10*zhishu(n);}
if(n==0)
return 1;
}
char f(int n)
{int p=0;
while(n)
{n=n/10;
p++;}
cout<<char(n/zhishu(p-1)+48);
n=n-(n/zhishu(p-1))*zhishu(p-1);
if(n)
return f(n);

我输出的是0,为什么,哪里错了,怎么改啊

zhishu这个函数没什么意义啊

char f(int n )
{
    int m=n/10;
    char c= n%10 + '0';

    if(m)
     cout<<f(n/10)<<c;
    else
       return(c);
         
     
         
  }

追问

其实zhishu的意思是10的多少次方,我的意思是比如345就%10的平方,就是zhishu(2),
不对啊,我输入345,
输出的是34p5,你可以运行试一下

追答

给你个完整的程序:

#include <iostream>
using namespace std;
void f(int n );

int main() {
int n;
   cin>>n;
   f(n);
return 0;
}

void f(int n)
{
    int m=n/10;
    char c= n%10 + '0';
    if(m)
{  f(m); cout<<c;}
    else
     cout<<(c);
  }

追问

你原来那个看起来也对,但为什么会输出不对?
还有这种方法好巧妙,你怎么想到的?

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-28
将一个整数n转换成相应的字符串
题目是什么意思?
举个例子,方便检查程序追问

就是比如一个int a=345;
变成char a="345";

追答

#include
#include
using namespace std;
int main()
{
int a;
cin>>a;
char s[20];
sprintf(s, "%d", a );
cout << s <<endl ;
return 0;
}

追问

sprintf(s, "%d", a );

这句看不懂啊,没学过C,只学了C++

追答

编程无定式,多学多研究
sprintf()是C语言中的一个格式化转换数据的函数,方便将任意数据转换成字符串,或称之为以字符形式存储到字符串中。详情可查阅相关资料。

c加加程序。用递归法将一个整数n转换成字符串。例如,输入572,输出275...
char *number_string = int2string(number);printf("%s\\n", number_string);return 0;}

用递归法将一个整数n转换成字符串。列如,输入483应输出字符串“483...
toStr(n,s));}

C++自己设计一个itoa(int n)函数可以将整数转化为字符串吗?_百度知 ...
1)字符串类型转化为整数型(Integer),还是字符串类型(String)转化为Double类型,这在java里面有非常好的内部函数,很easy的事情;(2)但是在c里面没有Integer Double等包装类,由char[]数组转化为整数型就变得不那么简单了,atoi() itoa()在widows下面有,但是网上说linux 下好像没有 itoa() 函...

C语言用递归法将一个整数n转换成字符串的程序中 putchar(n%10+'0...
n%10对10取余数,得到个位。个位+ '0'就是得到对应的数字字符比如1 + '0' = '1'查看下ASCII码表就知道了。

\/\/用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串"483...
1)递归中间步骤:若当前整数参数a 不为个位。。则将a\/10代入char* function(int a) ; 并等待调用的函数被跳出后 将当前整数参数a的最低位存入字符串。2)递归最底层情况:最若该整数为个位 则直接转换为ascii码;并存入字符窜。。递归结束 include char mychar[100];\/\/定义一个无限大的字符...

c++编写一个递归函数,将一个字符串按其逆序输出。要求不要用指针和...
void rec_print( char* str ){ if (0 == str || 0 == str_len(str) ) return;printf("%c",str[strlen(str)-1]);str[strlen(str)-1]=0;rec_print(str);} void rec_print_no_pointer( std:;string& str ){ if (!str.size()) return;std::cout << str.substr(str.size(...

...用递归法并通过函数调用方法将一个整数换成字符串,如整数123对应的...
include<stdio.h> int n=-1 void copy(int i,char x[]){ if(i<10)x[i]=i+48;else { n++;copy(i\/10,x);n--;} }

用递归法将整数n转换成字符串,输入483,输出字符“483”,怎么理解递归函 ...
这个代码,分析如下:以483为例,首次调用n=483,n除以10等于48,48不等于0,就递归调用自己,参数是n=48,48除以10等于4,继续调用自己,参数n=4,4除以10等于0,停止调用自己,显示一个字符,即4,返回上一个调用自己的地方,即参数n等于48的那一层面,返回后n是等于48,48%10等于8,所有屏幕...

C++:设计函数求将整数转换为十六进制(字符数组的方式),要求用递归方式...
以下提供参考,可转换任意正负整数,并附上测试用例及预期输出 :]include<iostream> using namespace std;const int MAXN=100;char num[MAXN];char digit[16]={ '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };int k;void toHex( int n )...

在C++中如何编出一个函数将整型数转化为字符串形式输出?
把一个带符号的整数转换为一个ASCII字符串。数字字符的ASCII值有什么特点呢?它们是颠倒顺序排列的;字符”0”的ASCII值加上1等于”1”的ASCII值,以此类推。因此,数字字符的ASCII就等于这个数字加上字符”0”的ASCII值。(注意,字符”0”的ASCII值是一个不等于零的数值,而这个数值代表着字符”0”...

相似回答