| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 815 人关注过本帖
标题:帮忙看一个进制转换程序
只看楼主 加入收藏
z767900438
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2012-7-25
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:18 
帮忙看一个进制转换程序
//把一个十进制整数化成n进制数(用递归的方法)
void  f(int i,int n);
#include<stdio.h>
int main()
{
        int i,n;
        printf("请输入一个int型的十进制整数:");
        scanf("%d",&i);
        printf("请输入要转换的进制:");
        scanf("%d",&n);
        printf("\n该数的二进制数为:");
        f(i,n);
        printf("\n");
return 0 ;

}

//递归函数
void f(int i,int n)
{  char bit[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        int p;
        if(n==0)
        return ;
        f(i/n,n);
        p=i%n;
        printf("%c",bit[p]);
}
我在linux运行,结果总是段错误,是不是递归调用太多,栈溢出了?
搜索更多相关主题的帖子: include return 二进制 十进制 
2012-07-26 00:06
w995612220
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:139
专家分:313
注 册:2012-6-20
收藏
得分:2 
#include<stdio.h>
int main()
{   void  f(int i,int n);
       for(;;)
       {
        int i,n;
        printf("请输入一个int型的十进制整数:");
        scanf("%d",&i);
        printf("请输入要转换的进制:");
        scanf("%d",&n);
        
        if(n!=0)   {printf("\n该数的%d进制数为:",n);    f(i,n); }
        else printf("输入错误");

        printf("\n");
        printf("\n");
       }

return 0 ;

}

//递归函数
void f(int i,int n)
{
        int p;
        if(i==0)
        return ;
         p=i%n;
         f(i/n,n);      
        printf("%1d",p);
}
//代码应该还是不错的。记得全给分
2012-07-26 01:46
qq3439819
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-7-25
收藏
得分:0 
递归函数P=i%n;不是一直被重复赋值吗~~到最后那个p等于最终那个余数吗?
2012-07-26 04:02
z767900438
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2012-7-25
收藏
得分:0 
回复 2楼 w995612220
代码还可以,就是比如转成十六进制的时候不行,因为没有ABCDEF,10是用A表示的,所以代码还是错的。我怀疑我代码错误是因为我重复初始化char bit[].不过还是感谢
2012-07-26 09:12
z767900438
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2012-7-25
收藏
得分:0 
回复 3楼 qq3439819
等于最初那个余数
2012-07-26 09:13
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:2 
回复 4楼 z767900438
把你的代码和二楼的代码放在一起 一行行对比,看看有啥不一样

总有那身价贱的人给作业贴回复完整的代码
2012-07-26 10:22
z767900438
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2012-7-25
收藏
得分:0 
回复 6楼 embed_xuel
就是二楼没有用ABCDEF表示10,11......,不能进行十六进制转换
2012-07-26 11:11
jtx0329
该用户已被删除
收藏
得分:1 
回复 2楼 w995612220
提示: 作者被禁止或删除 内容自动屏蔽
2012-07-26 11:34
我乃新手
Rank: 2
等 级:论坛游民
帖 子:52
专家分:73
注 册:2012-7-23
收藏
得分:1 
不错的代码,楼主的十六进制可以用ABCDEF输出的,你有一句写错了,
void f(int i,int n)
{  char bit[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        int p;
        if(n==0)
        return ;
        p=i%n;//这两句调换一下位置就可以了!
        f(i/n,n);//这两句调换一下位置就可以了!不错的代码
        printf("%c",bit[p]);
}
2012-07-26 11:37
z767900438
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2012-7-25
收藏
得分:0 
回复 9楼 我乃新手
对,我那句是写倒了, 不过我改了之后,还是不能执行,编译是没问题的,执行时总是提示段错误,我怀疑是不是栈溢出了
2012-07-26 12:22
快速回复:帮忙看一个进制转换程序
数据加载中...
 
   



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

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