十进制转n进制

版权声明:你快乐吗?我很快乐 https://blog.csdn.net/Shallwen_Deng/article/details/90144446

方法:除n取余,倒序输出。余数小于10,加48;余数大于等于10,加55。

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

void shift(char* p, long m, int n)    
{
    int r;
    while (m > 0)
    {
        r = m%n;			//求余
        if (r < 10)
        {
            *p = r + 48;    //小余10的数转换成字符后赋给P所指向的元素
        }
        else
        {
            *p = r + 55;	//10-15转化为“A~F”后赋给P所指向的元素
        }
        m = m / n;
        p++; 				//指针后移

    }
    *p = '/0';
}
int main(void)
{
    int x;
    long y;
    char a[32] = {};		//存放结果的数组
    L:
    printf("输入要转化的进制数:"); 
    scanf("%d", &x);
    if (x <= 0)
    {
        printf("输入有误!请重新输入!\n");
        goto L;
    }
    else
    {
        printf("请输入需要被转换的十进制数:");
        scanf("%ld", &y);
        printf("\n");
        printf("%d转换为%d进制数为:", y, x);
        shift(a, y, x);
        for (int i = strlen(a) - 1; i >= 0; i--)    //逆向输出字符串
        {
            printf("%c", *(a + i));         		//*(a+i)即a[i];
        }
    }


    printf("\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Shallwen_Deng/article/details/90144446