| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 615 人关注过本帖, 1 人收藏
标题:递归的问题,请教,多谢
只看楼主 加入收藏
black_billow08
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-9-27
收藏(1)
 问题点数:0 回复次数:5 
递归的问题,请教,多谢
这是一个十进制数到二进制数转化的小程序:
#include <stdio.h>
void to_binary(unsigned long n);

int main(void)
{
    unsigned long number;
    printf("enter an integer(q to quit): \n");
    while(scanf("%ul",&number) == 1)
    {
        printf("binary equivalent: ");
        to_binary(number);
        putchar('\n');
        printf("enter an integer(q to quit): \n");
    }
    printf("done.\n");
    
    return 0;
}
void to_binary(unsigned long n)
{
    int r;
    r=n%2;
    if(n>=2)
        to_binary(n/2);
    putchar('0'+r);    //问题:这里为什么不能直接putchar(r);
//    putchar(r ? '1':'0');

    return;
}
请教的问题在注释里,多谢
搜索更多相关主题的帖子: 递归 
2008-09-27 16:59
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
[bo][un]black_billow08[/un] 在 2008-9-27 16:59 的发言:[/bo]
  putchar('0'+r);    //问题:这里为什么不能直接putchar(r);
 


字符'0'的值为48, '1'的值为49, 而r的值为1或0,putchar()输出字符,所以要加上'0'或48;
如果用printf("%d",r)就不用加'0'了

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2008-09-27 17:08
black_billow08
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-9-27
收藏
得分:0 
[bo][un]ml232528[/un] 在 2008-9-27 17:08 的发言:[/bo]



字符'0'的值为48, '1'的值为49, 而r的值为1或0,putchar()输出字符,所以要加上'0'或48;
如果用printf("%d",r)就不用加'0'了


你这样printf输出的是十进制数啊?
我再思考一下,多谢你的帮助啊!
2008-09-27 17:32
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
表面上还是二进制的,因为只有1 0

倚天照海花无数,流水高山心自知。
2008-09-27 18:22
chonhuang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-9-25
收藏
得分:0 
版主高见,应该是为了得到’1‘、’0‘字符的ASCII码值来输出.
2008-09-27 22:10
black_billow08
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-9-27
收藏
得分:0 
明白,谢谢各位!
2008-09-28 08:23
快速回复:递归的问题,请教,多谢
数据加载中...
 
   



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

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