Flüsse 2021-09-24 10:59 采纳率: 100%
浏览 35
已结题

这个怎么编程,类似的其他进制转换怎么编程

img

  • 写回答

2条回答 默认 最新

  • Naiva 2021-09-24 11:06
    关注
    
    #include <stdio.h>
     
    #define MAXCHAR 101  /*最大允许字符串长度*/
     
    int char_to_num(char ch);  /*返回字符对应的数字*/ 
    char num_to_char(int num);  /*返回数字对应的字符*/
    long source_to_decimal(char temp[], int source);  /*返回由原数转换成的10进制数*/
    int decimal_to_object(char temp[], long decimal_num, int object);  /*返回转换成目标数制后字符数组的长度*/
    void output(char temp[], int length);  /*将字符数组逆序打印*/
     
    int main()
    {
        int source;  /*存储原数制*/
        int object;  /*存储目标数制*/
        int length;  /*存储转换成目标数制后字符数组的长度*/
        long decimal_num;  /*存储转换成的10进制数*/
        char temp[MAXCHAR];  /*存储待转换的数值和转换后的数值*/
        int flag = 1;  /*存储是否退出程序的标志*/
        while(flag)  /*利用输入的flag值控制循环是否结束*/
        {
            printf("转换前的数是:");
            scanf("%s", temp);
            printf("转换前的数制是:");
            scanf("%d", &source);
            printf("转换后的数制是:");
            scanf("%d", &object);
            printf("转换后的数是:");
            decimal_num = source_to_decimal(temp, source);
            length = decimal_to_object(temp, decimal_num, object);
            output(temp, length);
            printf("继续请输入1,否则输入0:\n");
            scanf("%d", &flag);
        }
     
        return 0;
    }
    /*将字符转换成数字*/
    int char_to_num(char ch)
    {
        if(ch>='0' && ch<='9')
            return ch-'0';  /*将数字字符转换成数字*/
        else
            return ch-'A'+10;  /*将字母字符转换成数字*/
    }
    char num_to_char(int num)
    {
        if(num>=0 && num<=9)
            return (char)('0'+num-0);  /*将0~9之间的数字转换成字符*/
        else
            return (char)('A'+num-10);  /*将大于10的数字转换成字符*/
    }
    long source_to_decimal(char temp[], int source)
    {
        long decimal_num = 0;  /*存储展开之后的和*/
        int length;
        int i;
        for( i=0; temp[i]!='\0'; i++ );
        length=i;
        for( i=0; i<=length-1; i++ )  /*累加*/
            decimal_num = (decimal_num*source) + char_to_num(temp[i]);
        return decimal_num;
    }
    int decimal_to_object(char temp[], long decimal_num, int object)
    {
        int i=0;
        while(decimal_num)
        {
            temp[i] = num_to_char(decimal_num % object);  /*求出余数并转换为字符*/
            decimal_num = decimal_num / object;  /*用十进制数除以基数*/
            i++;
        }
        temp[i]='\0';
        return i;
    }
    void output(char temp[], int length)
    {
        int i;
        for( i=length-1; i>=0; i--)  /*输出temp数组中的值*/
            printf("%c", temp[i]);
        printf("\n");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 9月24日

悬赏问题

  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案