社区
C语言
帖子详情
请教怎么用递归法把一整数转成字串。如2345->"2345"
gwolf
2003-08-22 08:47:50
怎么递归啊?
...全文
101
15
打赏
收藏
请教怎么用递归法把一整数转成字串。如2345->"2345"
怎么递归啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wbh0360
2003-08-24
打赏
举报
回复
没意思,非要低归干什么
leafxx
2003-08-23
打赏
举报
回复
/* atoi: 将字符串s转换成整数 */
int atoi (char s[])
{
int i,n;
n=0;
for (i=0; s[i]>='0'&&s[i]<='9'; ++i)
n=10*n+(s[i]-'0');
return n;
}
Wendydd
2003-08-23
打赏
举报
回复
不得不说一下
玩一下
没效率的 :)
Wendydd
2003-08-23
打赏
举报
回复
:)
最终递归版本
没有全局变量
可以处理负数
#include <iostream>
using namespace std;
void
recursion_itoa(int src, char *buffer)
{
if (src < 0) {
*buffer = '-';
recursion_itoa(0 - src, buffer + 1);
} else if (src >= 0 && src <= 9) {
*buffer = src + '0';
*++buffer = 0;
} else {
recursion_itoa(src / 10, buffer);
int len = strlen(buffer);
buffer[len] = src % 10 + '0';
buffer[len + 1] = 0;
}
}
int main(int argc, char **argv)
{
char buffer[32];
recursion_itoa(12345, buffer);
cout << buffer << endl;
recursion_itoa(0, buffer);
cout << buffer << endl;
recursion_itoa(-12345, buffer);
cout << buffer << endl;
recursion_itoa(1, buffer);
cout << buffer << endl;
system("PAUSE");
return 0;
}
Wendydd
2003-08-23
打赏
举报
回复
#include <iostream>
using namespace std;
char*
recursion_itoa(int src, char *buffer)
{
if (src >= 0 && src <= 9) {
*buffer = src + '0';
} else {
recursion_itoa(src / 10, buffer);
buffer[strlen(buffer)] = src % 10 + '0';
buffer[strlen(buffer) + 1] = 0;
}
return buffer;
}
int main(int argc, char **argv)
{
char buffer[32];
cout << recursion_itoa(12345, buffer) << endl;
system("PAUSE");
return 0;
}
fogeye
2003-08-23
打赏
举报
回复
千万不要养成什么都自己动手的坏毛病
mme
2003-08-23
打赏
举报
回复
寒~
这样的转换还用得着递归吗?
把每一位都加'0'不就行了嘛!
okbody
2003-08-23
打赏
举报
回复
汗!
有现成的函数啊
normalnotebook
2003-08-22
打赏
举报
回复
如果你是用来训练,是可以的;
但在实际中,是非常不适合的,用sprintf()和 itoa()两个函数就可以实现啊
Dragon132
2003-08-22
打赏
举报
回复
已经可以了,自己看看吧
#include <stdio.h>
char str[10];
char *p=str;
changestr(int n)
{
int m;
p=str;
m=n%10;
n=n/10;
if(n!=0)
{
changestr(n);
}
*p++=m+'0';
}
main()
{
int n=2345;
changestr(n);
*p='\0';
puts(str);
}
leialen
2003-08-22
打赏
举报
回复
char iString[100];
static i = 0;
int myItoa(int a)
{
if(a > 10)
{
myItoa(a/10);
}
iString[i++] = (a%10)+0x30;
}
int main()
{
char *pStr;
int a = 12345;
pStr = iString;
myItoa(a);
printf("%s",pStr);
}
能凑或用,不过全局变量不好,最好少用:)
chxinheifeng
2003-08-22
打赏
举报
回复
void fun(int x,char * pC,int iLay,int& iMax)
{
if (x < 10)
{
iMax = iLay;
*(pC+iMax-iLay) = '0' + x;
}
else
{
int y,z;
z=x;
x/=10;
y=z-x*10;
iLay ++;
fun(x,pC,iLay,iMax);
iLay --;
*(pC+iMax-iLay) = '0' + y;
*(pC+iMax-iLay+1) = '\0';
}
}
void main()
{
int iMax=0;
int iLay=1;
int x=2345;
char pc[100]="";
fun(x,pc,iLay,iMax);
printf(pc);
}
如果反序输出可以减少参数如2345 输出 "5432",对于pc可以用全局变量代替
最简单的使用 itoa 自己写多麻烦
gwolf
2003-08-22
打赏
举报
回复
1a%10=a??
oopig
2003-08-22
打赏
举报
回复
为什么要递归呢?sprintf不行吗?
zyzyandzyzy
2003-08-22
打赏
举报
回复
如果是一位的数,根据ASCII码转换,如果不是,除10做为参数递归,似乎要定义一个全局变量。
大致就是这样,代码懒得写了,包涵包涵。
我现在要提问却没有分数,所以四处要分。
c/c++笔试题
线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发...
c++笔试题
微软亚 微软亚洲技术中心的面试题!...(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
c++ 笔试题
线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也...
C/C++笔试题
微软亚洲技术中心的面试题!...(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4
C/C++笔试题(很多)
微软亚洲技术中心的面试题!...(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章