请问这是不是最优雅的进制转换方法?
问题描述: 二进制与十进制的相互转换,输入一组数据,若为十进制,则将其转换为二进制;若为二进制则将其转换为十进制。其中所要转换的十进制与二进制的十进制大于零小于等于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 编辑 ]