|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 一个简单程序,倒序输出数列,程序已编完,但是为什么倒序输出多了个0,请各位不吝赐教!
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
2244
人关注过本帖
标题:
一个简单程序,倒序输出数列,程序已编完,但是为什么倒序输出多了个0,请各 ...
只看楼主
加入收藏
abc594986308
等 级:
论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
结帖率:
82.93%
楼主
收藏
已结贴
√
问题点数:5 回复次数:10
一个简单程序,倒序输出数列,程序已编完,但是为什么倒序输出多了个0,请各位不吝赐教!
#include<stdio.h>
int fac(int a)
{
int n,z;
z=a%10;
printf("%d",z);
if(a/10)
n=fac(a/10);
}
int main()
{
int x,m;
printf("输入一个数字\n");
scanf("%d",&x);
m=fac(x);
printf("%d",m);
return 0;
}
搜索更多相关主题的帖子:
return
2013-03-25 17:31
举报帖子
使用道具
赠送鲜花
韶志
来 自:斗气大陆
等 级:
贵宾
威 望:
44
帖 子:2223
专家分:13592
注 册:2013-3-22
第
2
楼
收藏
得分:0
int main()
{
int x,m;
printf("输入一个数字\n");
scanf("%d",&x);
m=
fac(x);
//不需要,删除,因为你的fac函数没有返回值,只起到打印作用
printf("%d",m);
//删除!
return 0;
}
n=
fac(a/10);
//也不需要,同上m理,不过加上也无所谓就是
[
本帖最后由 韶志 于 2013-3-25 17:45 编辑
]
三十年河东,三十年河西,莫欺少年穷!
2013-03-25 17:41
举报帖子
使用道具
赠送鲜花
embed_xuel
等 级:
贵宾
威 望:
58
帖 子:3845
专家分:11385
注 册:2011-9-13
第
3
楼
收藏
得分:0
这破代码,你递归函数没有返回值
总有那身价贱的人给作业贴回复完整的代码
2013-03-25 17:41
举报帖子
使用道具
赠送鲜花
abc594986308
等 级:
论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
第
4
楼
收藏
得分:0
回复 3楼 embed_xuel
改成这样,还是在后面会出现一系列乱码。虽然起到倒序的目的
#include<stdio.h>
int fac(int a)
{
int n,z;
z=a%10;
printf("%d",z);
if(a/10)
n=fac(a/10);
return n;
}
void main()
{
int x,m;
printf("输入一个数字\n");
scanf("%d",&x);
m=fac(x);
printf("%d",m);
printf("\n");
}
2013-03-25 17:43
举报帖子
使用道具
赠送鲜花
abc594986308
等 级:
论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
第
5
楼
收藏
得分:0
回复 2楼 韶志
这个0是怎么多出来的?非常困惑啊
2013-03-25 17:46
举报帖子
使用道具
赠送鲜花
韶志
来 自:斗气大陆
等 级:
贵宾
威 望:
44
帖 子:2223
专家分:13592
注 册:2013-3-22
第
6
楼
收藏
得分:0
回复 4楼 abc594986308
按照我的几个删除后就可以啦,不需要返回也行的
三十年河东,三十年河西,莫欺少年穷!
2013-03-25 17:46
举报帖子
使用道具
赠送鲜花
abc594986308
等 级:
论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
第
7
楼
收藏
得分:0
回复 6楼 韶志
有几点不明白,那些地方怎样可以保留下来,又可以实现倒序输出,而不出现多余代码?请指教。谢谢
2013-03-25 17:49
举报帖子
使用道具
赠送鲜花
abc594986308
等 级:
论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
第
8
楼
收藏
得分:0
回复 2楼 韶志
按照你的帖子内容,我改了下。
#include<stdio.h>
void fac(int a)
{
int n,z;
z=a%10;
printf("%d",z);
if(a/10)
fac(a/10);
}
void main()
{
int x;
printf("输入一个数字\n");
scanf("%d",&x);
fac(x);
printf("\n");
}
这样的确简便多了。
2013-03-25 17:51
举报帖子
使用道具
赠送鲜花
韶志
来 自:斗气大陆
等 级:
贵宾
威 望:
44
帖 子:2223
专家分:13592
注 册:2013-3-22
第
9
楼
收藏
得分:0
回复 5楼 abc594986308
因为你的这两条语句
m=fac(x);
printf("%d",m);
fac没有返回值,而你把fac(x)赋值给m,系统就会默认返回给m一个0 ,然后不久由你的输出语句输出了么。。
不信就删除的你 printf("%d",m);
其它不变,然后调试一下试试
三十年河东,三十年河西,莫欺少年穷!
2013-03-25 17:53
举报帖子
使用道具
赠送鲜花
韶志
来 自:斗气大陆
等 级:
贵宾
威 望:
44
帖 子:2223
专家分:13592
注 册:2013-3-22
第
10
楼
收藏
得分:5
回复 7楼 abc594986308
main函数里的内容咱就不说了,它输入一个数字后,其它的工作(包括打印)都交给 你的递归函数处理了
void fac(int a)
{
int
n,
z;
//不要了
z=a%10;
//求输入数的个位数
printf("%d",z);
if(a/10)
//判断,如果a已经是个位数,就不需要再往下递归了,也就是所谓的到了边界了
fac(a/10);
//判断,如果a不是个位数,就需要继续往下递归了,注意这条语句过后,a的值变了,a=a/10,这也是递归函数的特点
}
举个例子:输入123
1、z=123%10=3,
输出3,
a/10!=0所以继续
a=a/10=12
2、z=2,
2,
。。。。。。。。
a=a/10=1
3、z=1%10=1,
1,
1/10==0,递归结束
懂了吗
三十年河东,三十年河西,莫欺少年穷!
2013-03-25 18:04
举报帖子
使用道具
赠送鲜花
11
1/2页
1
2
快速回复:
一个简单程序,倒序输出数列,程序已编完,但是为什么倒序输出多了个0 ...
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.027039 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved