【leetcode】504. 七进制数 (简单)

【leetcode】504. 七进制数
给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。

示例 1:

输入: num = 100
输出: “202”

示例 2:

输入: num = -7
输出: “-10”

解题思路:

设置正负数标志位,标记最后输出结果需不需要加上负号
十进制转七进制
举例:
101:
101 % 7 = 3
101 / 7 = 14

14 % 7 = 0
14 / 7 = 2

2 % 7 = 2
7 / 7 = 1 //直到除以7等于1结束,2 % 7 = 2为个位对应的数

十进制转七进制最终的结果(从个位开始往高位写)为,203

代码:

C:

char * convertToBase7(int num){
    if(num == 0) return "0";
    int quotient = 0; //商
    int remainder = 0; // 余数
    bool negative = num < 0;   //正负数标志位
    num = abs(num);
    // char res[32] = {'\0'}; 
    char *res = (char *)malloc(sizeof(char) * 32);  //动态分配内存
    int i = 0;
    while(num)
    {
        remainder = num % 7;
        num = num / 7;
        res[i++] = remainder + '0';
    }
    if(negative) res[i++] = '-';    //负数加上'-'
    for(int m = 0, n = i - 1; m < n; m++, n--)  //对res反转
    {
        char c = res[m];
        res[m] = res[n];
        res[n] = c;
    }
    res[i] = '\0';  //字符串结束标识符
    printf("%s", res);
    return res;
}

备注:

    // char res[32] = {'\0'}; 
    char *res = (char *)malloc(sizeof(char) * 32);  //动态分配内存

该处用malloc分配内存,运行可以正常返回结果,但定义字符串数组char res[32] = {‘\0’}; 最终res返回NULL,没有明白为什么

拓展:

一. -1 转换成二进制数

32位 11111111 11111111 11111111 11111111
16位 11111111 11111111
8位 11111111
4位 1111
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值