标题:请问这是不是最优雅的进制转换方法?
只看楼主
chaoc
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2012-10-20
结帖率:71.43%
已结贴  问题点数:10 回复次数:3 
请问这是不是最优雅的进制转换方法?
问题描述:  
二进制与十进制的相互转换,输入一组数据,若为十进制,则将其转换为二进制;若为二进制则将其转换为十进制。其中所要转换的十进制与二进制的十进制大于零小于等于255。

 输入:
测试用例包含多组,每组有两个数n和m,n为所输入的数值,m为输入数的进制,如m=2,代表所输入的n是二进制数。当m和n均为零是表示输出结束。

 输出:
若输入的数是十进制,则将其转换为二进制;若所输入的数为二进制,则将其转换为十进制,并输出。每个结果对应一行,最后输出换行。  

样例输入:
10 2
10 10
0 0  

样例输出:
2 1010

我的答案:
#include <stdio.h>

//将数字n从c进制转为t进制
int convent(int n,int c,int t)
{
    int sum = 0;
    int tem = 1;

    while(n)
    {
        sum += (n%t)*tem;
        n /= t;

        tem *= c;
    }

    return sum;
}

int main()
{
    int n,m;
    while(1)
    {
        scanf("%d %d",&n,&m);

        if (m == 0 && n == 0)
        {
            break;
        }

        if (m==10)
        {
            printf("%d\n",convent(n,10,2));
        }
        else
        {
            printf("%d\n",convent(n,2,10));
        }
    }

    return 0;
}

总觉得心里有点不安 这样做好像不对?总觉得哪里不直观。好像以前教科书上的方法比这好

[ 本帖最后由 chaoc 于 2015-3-10 17:37 编辑 ]
搜索更多相关主题的帖子: 优雅 十进制 二进制 
2015-03-10 17:31
松鼠岛
Rank: 2
等 级:论坛游民
帖 子:3
专家分:11
注 册:2015-3-10
得分:5 
厉害
2015-03-10 17:40
chaoc
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2012-10-20
得分:0 
回复 2楼 松鼠岛
我是来求指出问题的  
这段代码写出来后 我自己看不懂
2015-03-10 17:47
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:5 
建议楼主在命名函数的时候检查一下拼写

http://fanyi.baidu.com/#en/zh/convert

http://fanyi.baidu.com/#en/zh/convent


2015-03-10 19:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-442510-1-1.html




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

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