c语言十进制与n进制互转

#include <stdio.h>
#include <string.h>

// 十进制转为n进制
void decimalToN(int decimal, int base) {
    char nNumber[50];
    int i = 0;
    
    while (decimal > 0) {
        int remainder = decimal % base;
        
        if (remainder < 10) {
            nNumber[i] = remainder + '0';
        } else {
            nNumber[i] = remainder - 10 + 'A';
        }
        
        decimal /= base;
        i++;
    }
    
    printf("The converted number is: ");
    
    for (int j = i - 1; j >= 0; j--) {
        printf("%c", nNumber[j]);
    }
    
    printf("\n");
}

// n进制转为十进制
int NToDecimal(char *nNumber, int base) {
    int length = strlen(nNumber);
    int decimal = 0;
    int power = 1;
    
    for (int i = length - 1; i >= 0; i--) {
        int digit;
        
        if (nNumber[i] >= '0' && nNumber[i] <= '9') {
            digit = nNumber[i] - '0';
        } else if (nNumber[i] >= 'A' && nNumber[i] <= 'Z') {
            digit = nNumber[i] - 'A' + 10;
        } else if (nNumber[i] >= 'a' && nNumber[i] <= 'z') {
            digit = nNumber[i] - 'a' + 10;
        } else {
            printf("Invalid number format!\n");
            return -1;
        }
        
        decimal += digit * power;
        power *= base;
    }
    
    return decimal;
}

int main() {
    int decimal = 123;
    int base = 16;
    char nNumber[50] = "7B";
    
    // 十进制转为n进制
    decimalToN(decimal, base);
    
    // n进制转为十进制
    int convertedDecimal = NToDecimal(nNumber, base);
    
    if (convertedDecimal != -1) {
        printf("The converted decimal is: %d\n", convertedDecimal);
    }
    
    return 0;
}

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超维Ai编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值