编制不同数制间的转换程序...(用c语言编写程序)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编制不同数制间的转换程序...(用c语言编写程序)?相关的知识,希望对你有一定的参考价值。
参考技术A 关于c语言的相关知识的话,我觉得你可以去咨询一下名字,语言老师。 参考技术B我不太清楚这里所说的界面是什么意思,是Windows窗体吗,还是说命令行输出就行?而且里面提到的任意十进制数字有点不太明确,是不是整数,有没有超过 long 的表示范围。有没有负数,如果有的话,用多少位的补码表示?
如果假设既是整数,又没有超过long,并且没有负数的情况下,我可以给出下面的程序(windows窗口程序我做不了,我是用的Mac系统,只能给出命令行程序)
#include<stdio.h>
char bases[] = "0123456789ABCDEF";
char * change_base(char * buff, int buff_len, long abs_num, int to_base)
int t = 0;
/* 缓冲区指针 */
char * bp = buff + buff_len;
/* 因为适合倒序使用缓冲区,因此将末尾置为 '\\0' */
*(--bp) = '\\0';
while (abs_num > 0)
t = abs_num % to_base;
*(--bp) = bases[t];
abs_num = (abs_num - t) / to_base;
return bp;
void main()
char buff[100] = "";
long num = 0;
int res, i, j, base = 0;
printf("%s", "请输入十进制数字:");
res = scanf("%ld", &num);
if (res > 0)
printf("%s", "请输入要转成多少进制(2~16):");
res = scanf("%d", &base);
if (base < 2 || base > 16)
puts("输入进制数有误!"); return;
printf("%ld转换为%d进制的结果是:", num, base);
if (num < 0)
num = -num;
printf("-");
/* 前面是全部输入输出和负数处理,
* 根据不同运行环境可以进行不同操作,
* 下面是转换算法,
* 入参为(结果缓冲区,缓冲区大小,待转换数字,转换后的进制),
* 返回结果为缓冲区上的结果字符串指针
*/
printf("%s\\n", change_base(buff, sizeof(buff), num, base));
else
puts("输入错误");
以上是关于编制不同数制间的转换程序...(用c语言编写程序)?的主要内容,如果未能解决你的问题,请参考以下文章