| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 555 人关注过本帖
标题:十进制数转换为K进制数问题
只看楼主 加入收藏
情.难言ゝ
Rank: 3Rank: 3
来 自:安徽安庆
等 级:论坛游侠
威 望:1
帖 子:74
专家分:137
注 册:2013-9-8
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:8 
十进制数转换为K进制数问题
我写了一个进制转换程序,结果是错误的,求各位大侠帮我改一下,感激不尽。。。。。

程序如下:

#include<stdio.h>

void swap(int n,int K)
{
    int s;
    printf("\t");
    do
    {
        s=n%K;
        n=n/K;
        if(s==0)printf("\b\b0");
        else
        {
            if(K==16)
                switch(s)
            {
            case '10':printf("\b\bA");break;
            case '11':printf("\b\bB");break;
            case '12':printf("\b\bC");break;
            case '13':printf("\b\bD");break;
            case '14':printf("\b\bE");break;
            case '15':printf("\b\bF");break;
            default:printf("\b\b%d",s);
            }
            else printf("\b\b%d",s);
        }
    }while(n!=0);
    printf("\f\n");
}

void main()
{
    int n,K;
    printf("请输入要转换的数(十进制):");
    scanf("%d",&n);
    printf("请输入要转换成的进制K:");
    scanf("%d",&K);
    printf("转换后的结果如下:\n");
    swap(n,K);
}

程序运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


结果中0不能显示。。。。
搜索更多相关主题的帖子: include 十进制 
2013-09-08 18:07
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
收藏
得分:5 
代码里面case后面的单元的类型要和switch()括号里的相称,这儿因为s是int类型 所以不需要加单引号。
            case 10:printf("\b\bA");break;
            case 11:printf("\b\bB");break;
            case 12:printf("\b\bC");break;
            case 13:printf("\b\bD");break;
            case 14:printf("\b\bE");break;
            case 15:printf("\b\bF");break;
这样就可以了。
2013-09-08 19:57
cloudycloud
Rank: 2
等 级:论坛游民
帖 子:14
专家分:35
注 册:2013-6-14
收藏
得分:5 
void swap(int n,int K)
{
    int s;
    printf("\t");
    do
    {
        s=n%K;
        n=n/K;
        if(s==0)printf("\b\b0");
        else
        {
            if(K>9&&K<=16){   //任意进制 16以内
                switch(s)
            {
            case 10:printf("\b\bA");break;   //去掉单引号
            case 11:printf("\b\bB");break;
            case 12:printf("\b\bC");break;
            case 13:printf("\b\bD");break;
            case 14:printf("\b\bE");break;
            case 15:printf("\b\bF");break;
            default:printf("\b\b%d",s);
            }
            }
            else printf("\b\b%d",s);
        }
    }while(n!=0);
    printf("\n");   //去掉\f
}

void main()
{
    int n,K;
    printf("请输入要转换的数(十进制):");
    scanf("%d",&n);
    printf("请输入要转换成的进制K:");
    scanf("%d",&K);
    printf("转换后的结果如下:\n");
    swap(n,K);
}

[ 本帖最后由 cloudycloud 于 2013-9-8 21:52 编辑 ]
2013-09-08 21:36
cloudycloud
Rank: 2
等 级:论坛游民
帖 子:14
专家分:35
注 册:2013-6-14
收藏
得分:5 
最后扩展了下看你喜欢吗?
void swap(int n,int K)
{
    int s;
    char a='A';
    printf("\t");
    do
    {
        s=n%K;
        n=n/K;
        if(s==0)printf("\b\b0");
        else
        {
            if(K>9&&K<36&&s>9){   //任意进制 36以内
            printf("\b\b%c",a+s-10);
            }
            else printf("\b\b%d",s);
        }
    }while(n!=0);
    printf("\n");   //去掉\f
}
void main()
{
    int n,K;
    printf("请输入要转换的数(十进制):");
    scanf("%d",&n);
    printf("请输入要转换成的进制(小于36)K:");
    scanf("%d",&K);
    printf("转换后的结果如下:\n");
    swap(n,K);
}
2013-09-08 21:56
情.难言ゝ
Rank: 3Rank: 3
来 自:安徽安庆
等 级:论坛游侠
威 望:1
帖 子:74
专家分:137
注 册:2013-9-8
收藏
得分:0 
回复 楼主 情.难言ゝ
那个改完后也不行哦,做完跟同学讨论了一下,现在知道了,是\f不该要,不过还是谢谢你啊,呵呵。。。。

树叶的离去,是风的追求、还是树的不挽留???
2013-09-09 22:36
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:2 
printf("\f\n");
图片附件: 游客没有浏览图片的权限,请 登录注册
这样是什么情况

Maybe
2013-09-09 22:41
情.难言ゝ
Rank: 3Rank: 3
来 自:安徽安庆
等 级:论坛游侠
威 望:1
帖 子:74
专家分:137
注 册:2013-9-8
收藏
得分:0 
回复 3楼 cloudycloud
可以。。。。为什么12进制不能有余数11啊,比如时钟上是12进制,不是也有11吗?还有个问题,我想在两个数之间加一个空格,该怎么实现啊?

树叶的离去,是风的追求、还是树的不挽留???
2013-09-09 22:56
情.难言ゝ
Rank: 3Rank: 3
来 自:安徽安庆
等 级:论坛游侠
威 望:1
帖 子:74
专家分:137
注 册:2013-9-8
收藏
得分:0 
回复 6楼 邓士林
这是我\f用错了啊,不用\f就不会出现这样的情况了,我\f没用过,是在书上看到有这个转义字符的,不会用。。。。。

树叶的离去,是风的追求、还是树的不挽留???
2013-09-09 22:58
cloudycloud
Rank: 2
等 级:论坛游民
帖 子:14
专家分:35
注 册:2013-6-14
收藏
得分:3 
回复 7楼 情.难言ゝ
可以有11不过一般都用b代表11,第二空格可以直接敲“ ”输出就好不用转义
2013-09-10 20:39
快速回复:十进制数转换为K进制数问题
数据加载中...
 
   



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

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