10进制N进制

题目需求:将一个十进制数值转换为任意N进制的数。(不考虑大数的问题)

结题思路:采用递归的形式处理,将十进制数值进行短除N的操作。如图所示:这里写图片描述

结果为:余数的结果 从下往上读取:如图中的1->0->1.

C语言代码:

递归实现:

#include <stdio.h>
int main(){

    void change(int n,int m);
    //m代表是几进制,n代表需要转换的十进制数值 
    int m=2;
    int n=0;
    while(scanf("%d",&n) != EOF){   
        change(n,m);
        printf("\n"); 
    }
    return 0;
}

void change(int n,int m){
    if(n==0)
    return ;
    else{
        //注意这两行语句的顺序,它决定了余数的读取顺序
        //是由上往下还是由下往上,也就是怎样的输出顺序
        change(n/m,m);
        printf("%d",n%m);
    }
}

数组实现:

#include"stdio.h"
main()
{
    int n;
    void change(int k,int n);
    printf("请输入一个整数:");
    scanf("%d",&n);
    change(n,8);
    return 0;
}
void change(int k,int n)
{
    int p,a[20];
    p=-1;
    while(k)
     {
        p++;
            a[p]=k%n;
            k=k/n;

    }
    while(p>=0)
    {
        printf("%1d",a[p]);
        p--;
    }
    printf("\n");

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值