编制不同数制间的转换程序...(用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语言编写程序)?的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程题,数制转换

c语言 数制转换(递归)

数据结构与算法JavaScript描述——栈的使用

汇编语言 编写 程序 LED 灯显示

请设计一个数制转换的C语言源程序

C语言各类数据类型间的混合运算