十进制转n进制

方法:除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;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值