哐哐蜜柑614 2021-12-11 17:22 采纳率: 100%
浏览 15
已结题

进制转换中当待转换数据为负数的时候该怎么写

问题描述
输入一个十进制整数N,将它转换成R进制数输出。

输入
输入数据包含多个测试实例,每个测试实例包含两个整数N和R(2<=R<=36).

输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,16用G表示等等)。

输入样列
7 2
23 12
-4 3

输出样例
111
1B
-11
这个代码可以转换正数,但是负数转化不了

#include<stdio.h>
#include<string.h>
void fun(int n,int th,char a[])
{
    char t;
    int len,k,i;
    i=0;
    do{
        k=n%th;
        if(k>=-9&&k<=-1){
            a[i]=-(k+'0');
        }
        else if(k>=0&&k<=9){
            a[i]=k+'0';
        }
        else{
            a[i]=k-10+'A';
        }
        n=n/th;
        i++;
    }while(n!=0);
    a[i]='\0';
    len=strlen(a);
    for(i=0;i<len/2;i++){
        t=a[i];
        a[i]=a[(len-1)-i];
        a[(len-1)-i]=t;
    }
} 
int main()
{
    int n,th;
    char str[100];
    while(1){
        scanf("%d%d",&n,&th);
        fun(n,th,str);
        puts(str);
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 书山客 2021-12-11 17:45
    关注
    
    #include<stdio.h>
    #include<string.h>
    void fun(int n, int th, char a[])
    {
        char t;
        int len, k, i;
        i = 0;
        int IS = 0;
        if (n<0)    //负数需要标记出来,最后进行单独处理
        {
            IS = 1;
            n = -n;
        }
        do {
            k = n % th;
            if (k >= -9 && k <= -1) {
                a[i] = k + '0';
            }
            else if (k >= 0 && k <= 9) {
                a[i] = k + '0';
            }
            else {
                a[i] = k - 10 + 'A';
            }
            n = n / th;
            i++;
        } while (n != 0);
        if (IS==1)  //负数需要额外添加符号
        {
            a[i] = '-';
            i++;
        }
        a[i] = '\0';
        len = strlen(a);
        for (i = 0; i < len / 2; i++) {
            t = a[i];
            a[i] = a[(len - 1) - i];
            a[(len - 1) - i] = t;
        }
    }
    int main()
    {
        int n, th;
        char str[100];
        while (1) {
            scanf("%d%d", &n, &th);
            fun(n, th, str);
            puts(str);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题