| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1065 人关注过本帖
标题:十进制转换二进制,要用递归函数解决,我的代码有错误,请大神帮帮忙
只看楼主 加入收藏
water95
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2015-4-10
结帖率:40%
收藏
已结贴  问题点数:10 回复次数:8 
十进制转换二进制,要用递归函数解决,我的代码有错误,请大神帮帮忙
输入
输入一个正整数n。

输出
输出n对应的二进制数。

样例输入
52
样例输出
110100


#include<stdio.h>
void  convert(int n)
{
   
   if(n/2!=0)
   {
   
     n=n/2;
     convert(n/2);

   }
   printf("%d",n%2);
}
int main()
{
  int n;
  scanf("%d",&n);
  convert(n);
  return 0;
}

我的答案
52
0100
前面的两个1不知为什么会没有,希望大神能帮个忙,解决这个问题,不胜感谢!!!!!
2015-08-04 17:18
sunbeam_
Rank: 3Rank: 3
来 自:我家
等 级:论坛游侠
威 望:1
帖 子:31
专家分:113
注 册:2015-8-2
收藏
得分:0 
把n=n/2那句代码删了就行

爱好计算机的电气学渣
2015-08-04 18:19
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:3 
程序代码:
#include<stdio.h>
//采用递归和按位与的方法取出每一位二进制数
void binary(int k)
{
    if(k==0) return;
    binary(k>>1);
    if(k & 1==1) 
       printf("%1d",1); 
    else printf("%1d",0);
}
int main()
{
    int n;
    scanf("%d",&n);
    binary(n);
    return 0;
}

一片落叶掉进了回忆的流年。
2015-08-04 18:23
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:2 
程序代码:
#include<stdio.h>
void  convert(int n)
{
    
   if(n/2!=0)
   {
    
     n=n/2;
     convert(n);//这里n已经变了

   }
   printf("%d",n%2);
}
int main()
{
  int n;
  scanf("%d",&n);
  convert(n);
  return 0;
}

一片落叶掉进了回忆的流年。
2015-08-04 18:26
sunbeam_
Rank: 3Rank: 3
来 自:我家
等 级:论坛游侠
威 望:1
帖 子:31
专家分:113
注 册:2015-8-2
收藏
得分:2 
回复 4楼 诸葛欧阳
这段代码错了吧  你先除了2 后面的输出的就是(n/2)%2了

爱好计算机的电气学渣
2015-08-04 18:35
实际应用
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:89
专家分:341
注 册:2015-5-30
收藏
得分:1 
回复 4楼 诸葛欧阳
输入2,打印成11了
2015-08-04 21:56
kenierlee
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:58
专家分:474
注 册:2015-7-28
收藏
得分:2 
程序代码:
#include <stdio.h>

void f(unsigned n)
{
    if (n & 0xFFFFFFFE)
        f(n >> 1);
    printf("%d", n & 1);
}

int main(void)
{
    int n;
    scanf("%d", &n);
    f(n);
    return 0;
}
2015-08-06 10:00
asdwchen
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-7-30
收藏
得分:0 
把n=n/2删了就可以
2015-08-06 16:19
实际应用
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:89
专家分:341
注 册:2015-5-30
收藏
得分:0 
void fn(unsigned int n) {
    int i;
    i=n%2;
    n=n/2;
    if(n) fn(n);
    printf("%1d",i);
}
2015-08-09 16:39
快速回复:十进制转换二进制,要用递归函数解决,我的代码有错误,请大神帮帮忙
数据加载中...
 
   



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

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