编写一个函数,将一个十进制转换为十六进制,在主函数实现输入和输出

编写一个函数,将一个十进制转换为十六进制,在主函数实现输入和输出

问题描述:

编写一个函数,将一个十进制转换为十六进制,在主函数实现输入和输出

int a;
scanf_s("%d", &a);
printf("0x%x", a);  

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

static void reverse(char *str, int len);
void convert(char *str, int n, int base);

int main(void)
{
    int n;
    char str[64];

    scanf("%d", &n);

    //16
    convert(str, n, 16);
    reverse(str, strlen(str));
    puts(str);

    //8
    convert(str, n, 8);
    reverse(str, strlen(str));
    puts(str);

    //2
    convert(str, n, 2);
    reverse(str, strlen(str));
    puts(str);

    return 0;
}

void convert(char *str, int n, int base)
{
    int i = 0, remain;

    if (base <= 0)
        return;

    while (n) {
        remain = n % base;
        if (remain >= 10)
            str[i] = remain - 10 + 'A';
        else
            str[i] = remain + '0';
        n /= base;
        i++;
    }

    str[i] = 0;
}

static void reverse(char *str, int len)
{
    int i, tmp;

    for (i = 0; i < len/2; i++) {
        tmp = str[i];
        str[i] = str[len - i - 1];
        str[len-i-1] = tmp;
    }
}

供参考~

 

建议多测测,找找问题~