| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1529 人关注过本帖
标题:递归法将一个整数转换成字符串出错了
只看楼主 加入收藏
gail
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-3-29
收藏
 问题点数:0 回复次数:9 
递归法将一个整数转换成字符串出错了

递归法将一个整数转换成字符串出错了用递归法将一个整数转换成字符串.如:输入483,输出字符串"483"
#include <stdio.h>
void vert(char *,int );
void main()
{
int n;
int i;
char a[10];
clrscr();
printf("input :\n");
scanf("%d",&n);
vert(a,n);
for(i=0;a[i]!='\0';i++)
printf("%c",a[i]);
getch();
}
void vert(char *p,int x)
{
if(x<10) *p=x+'0';
else
{
*p=x%10+'0';
vert(p++,x/10);

}
}

搜索更多相关主题的帖子: 整数 递归 字符 
2006-03-29 22:27
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

注意区别,当然这个也可以用库函数,或者直接当字符录入,下面只是针对的你程序
[CODE]
#include <stdio.h>
void vert(char *,int );
void main()
{
int i,n;
char a[10];

printf("input :\n");
scanf("%d",&n);
vert(a,n);
for(i=strlen(a)-1;i>=0;i--)
printf("%c",a[i]);
getch();
}

void vert(char *p,int x)
{
if(x<10)
{
*p++=x+'0';
*p='\0';
}
else
{
*p=x%10+'0';
vert(++p,x/10);
}
}


[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-29 22:41
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用feng1256在2006-3-29 22:41:00的发言:

注意区别,当然这个也可以用库函数,或者直接当字符录入,下面只是针对的你程序
[CODE]
#include <stdio.h>
void vert(char *,int );
void main()
{
int i,n;
char a[10];

printf("input :\n");
scanf("%d",&n);
vert(a,n);
for(i=strlen(a)-1;i>=0;i--)
printf("%c",a[i]);
getch();
}

void vert(char *p,int x)
{
if(x<10)
{
*p++=x+'0';/*这为什么要加'0'呢??*/
*p='\0';
}
else
{
*p=x%10+'0';//这也是..还有..这个递归的结束在哪??//
vert(++p,x/10);
}
}


[/CODE]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-03-30 09:28
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
莫非*p='\0' 是结束吗?

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-03-30 10:05
gail
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-3-29
收藏
得分:0 

谢谢了


2006-03-30 13:15
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用SunShining在2006-3-30 10:05:00的发言:
莫非*p='\0' 是结束吗?

对啦 +'0'是转化为数字字符


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-30 15:13
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
那么怎么理解.此函数 遇到 *p='\0' 就结束了呢.

这个的意思不是在 字符串的最后加的结束符.可怎么理解函数呢!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-03-30 17:02
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
要倒序输出
+'0'将数字转化为相应的字符变量

2006-03-30 21:21
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
以下是引用gail在2006-3-29 22:27:00的发言:

递归法将一个整数转换成字符串出错了用递归法将一个整数转换成字符串.如:输入483,输出字符串"483"
#include <stdio.h>
void vert(char *,int );
void main()
{
int n;
int i;
char a[10];
clrscr();
printf("input :\n");
scanf("%d",&n);
vert(a,n);/*这里的用法很奇怪,a没有实参值传递给形参,这里应该是传递地址吧是不是应该改成
vert(&a,n);*/
for(i=0;a[i]!='\0';i++)
printf("%c",a[i]);
getch();
}
void vert(char *p,int x)
{
if(x<10) *p=x+'0';
else
{
*p=x%10+'0';
vert(p++,x/10);

}
}


2006-03-30 21:30
叶赫娜拉
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-3-30
收藏
得分:0 

数组名就是地址


千秋霸业,百战成功,边声四起唱大风 一马奔腾,射雕引弓,天地都在我心中
2006-03-30 21:32
快速回复:递归法将一个整数转换成字符串出错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016836 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved